2
0
Luke Pulverenti 11 жил өмнө
parent
commit
53776b332c

+ 2 - 6
MediaBrowser.Controller/Entities/Audio/Audio.cs

@@ -21,7 +21,7 @@ namespace MediaBrowser.Controller.Entities.Audio
         /// </summary>
         /// <value><c>true</c> if this instance has embedded image; otherwise, <c>false</c>.</value>
         public bool HasEmbeddedImage { get; set; }
-        
+
         /// <summary>
         /// Override this to true if class should be grouped under a container in indicies
         /// The container class should be defined via IndexContainer
@@ -36,10 +36,6 @@ namespace MediaBrowser.Controller.Entities.Audio
             }
         }
 
-        /// <summary>
-        /// The unknown album
-        /// </summary>
-        private static readonly MusicAlbum UnknownAlbum = new MusicAlbum { Name = "<Unknown>" };
         /// <summary>
         /// Override this to return the folder that should be used to construct a container
         /// for this item in an index.  GroupInIndex should be true as well.
@@ -50,7 +46,7 @@ namespace MediaBrowser.Controller.Entities.Audio
         {
             get
             {
-                return Parent is MusicAlbum ? Parent : Album != null ? new MusicAlbum { Name = Album, PrimaryImagePath = PrimaryImagePath } : UnknownAlbum;
+                return Parents.OfType<MusicAlbum>().FirstOrDefault() ?? new MusicAlbum { Name = "<Unknown>" };
             }
         }
 

+ 1 - 1
MediaBrowser.Controller/Entities/IHasImages.cs

@@ -81,7 +81,7 @@ namespace MediaBrowser.Controller.Entities
         /// Gets or sets the primary image path.
         /// </summary>
         /// <value>The primary image path.</value>
-        string PrimaryImagePath { get; set; }
+        string PrimaryImagePath { get; }
 
         /// <summary>
         /// Gets the preferred metadata language.

+ 0 - 1
MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs

@@ -1,6 +1,5 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
 using System.Threading;
 using System.Threading.Tasks;
 

+ 6 - 3
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -164,7 +164,7 @@ namespace MediaBrowser.Providers.Manager
         protected virtual IEnumerable<IMetadataProvider> GetProviders(IHasMetadata item, bool hasRefreshedMetadata, MetadataRefreshOptions options)
         {
             // Get providers to refresh
-            var providers = ((ProviderManager) ProviderManager).GetMetadataProviders<TItemType>(item).ToList();
+            var providers = ((ProviderManager)ProviderManager).GetMetadataProviders<TItemType>(item).ToList();
 
             // Run all if either of these flags are true
             var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !hasRefreshedMetadata;
@@ -258,7 +258,7 @@ namespace MediaBrowser.Providers.Manager
 
                     if (localItem.HasMetadata)
                     {
-                        MergeData(localItem.Item, temp, new List<MetadataFields>(), false, true);
+                        MergeData(localItem.Item, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
                         refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
 
                         // Only one local provider allowed per item
@@ -287,7 +287,10 @@ namespace MediaBrowser.Providers.Manager
                 await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType>>(), refreshResult, cancellationToken).ConfigureAwait(false);
             }
 
-            MergeData(temp, item, item.LockedFields, true, true);
+            if (refreshResult.UpdateType > ItemUpdateType.Unspecified)
+            {
+                MergeData(temp, item, item.LockedFields, true, true);
+            }
 
             return refreshResult;
         }

+ 1 - 1
MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs

@@ -177,7 +177,7 @@ namespace MediaBrowser.Providers.MediaInfo
             }
 
             // Image is already in the cache
-            item.PrimaryImagePath = path;
+            item.SetImagePath(ImageType.Primary, path);
         }
 
         /// <summary>

+ 2 - 2
MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs

@@ -227,7 +227,7 @@ namespace MediaBrowser.Providers.MediaInfo
             }
 
             // Image is already in the cache
-            item.PrimaryImagePath = path;
+            item.SetImagePath(ImageType.Primary, path);
         }
 
         /// <summary>
@@ -256,7 +256,7 @@ namespace MediaBrowser.Providers.MediaInfo
 
                 await _mediaEncoder.ExtractImage(inputPath, type, false, video.Video3DFormat, imageOffset, path, cancellationToken).ConfigureAwait(false);
 
-                video.PrimaryImagePath = path;
+                video.SetImagePath(ImageType.Primary, path);
             }
             finally
             {

+ 3 - 3
MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs

@@ -116,7 +116,7 @@ namespace MediaBrowser.Providers.TV
 
             if (!File.Exists(path))
             {
-                episode.PrimaryImagePath = null;
+                episode.SetImagePath(ImageType.Primary, null);
             }
         }
 
@@ -137,7 +137,7 @@ namespace MediaBrowser.Providers.TV
 
                 if (file != null)
                 {
-                    item.PrimaryImagePath = file.FullName;
+                    item.SetImagePath(ImageType.Primary, file.FullName);
                     return;
                 }
             }
@@ -154,7 +154,7 @@ namespace MediaBrowser.Providers.TV
 
                 if (file != null)
                 {
-                    item.PrimaryImagePath = file.FullName;
+                    item.SetImagePath(ImageType.Primary, file.FullName);
                     return;
                 }
             }

+ 2 - 1
MediaBrowser.Providers/TV/EpisodeXmlParser.cs

@@ -2,6 +2,7 @@
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
 using System.Globalization;
 using System.IO;
@@ -90,7 +91,7 @@ namespace MediaBrowser.Providers.TV
 
                             if (File.Exists(filename))
                             {
-                                item.PrimaryImagePath = filename;
+                                item.SetImagePath(ImageType.Primary, 0, filename);
                             }
                         }
                         break;