diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 9e4129cd12..6f4a0c4d2c 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -21,7 +21,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// /// true if this instance has embedded image; otherwise, false. public bool HasEmbeddedImage { get; set; } - + /// /// 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 } } - /// - /// The unknown album - /// - private static readonly MusicAlbum UnknownAlbum = new MusicAlbum { Name = "" }; /// /// 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().FirstOrDefault() ?? new MusicAlbum { Name = "" }; } } diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index 2fef9a035f..18e6afcd18 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -81,7 +81,7 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the primary image path. /// /// The primary image path. - string PrimaryImagePath { get; set; } + string PrimaryImagePath { get; } /// /// Gets the preferred metadata language. diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs index c94a25a304..1bff5647ba 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs +++ b/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; diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 19f155a07e..69f9708914 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -164,7 +164,7 @@ namespace MediaBrowser.Providers.Manager protected virtual IEnumerable GetProviders(IHasMetadata item, bool hasRefreshedMetadata, MetadataRefreshOptions options) { // Get providers to refresh - var providers = ((ProviderManager) ProviderManager).GetMetadataProviders(item).ToList(); + var providers = ((ProviderManager)ProviderManager).GetMetadataProviders(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(), false, true); + MergeData(localItem.Item, temp, new List(), !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>(), 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; } diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index 8d768a6a0f..ad3211650a 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/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); } /// diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index fc8826b613..21d3ae3e8e 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/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); } /// @@ -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 { diff --git a/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs b/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs index 83d36bb3c3..f2aaa0f063 100644 --- a/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs +++ b/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; } } diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs index 446c34f740..d0bf7bcded 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs +++ b/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;