From 08b7f88b225986777b2a70d4776522cd2e072043 Mon Sep 17 00:00:00 2001 From: Thomas Gillen Date: Sun, 15 Dec 2013 00:26:01 +0000 Subject: [PATCH 1/2] Added Images to MetadataFields --- MediaBrowser.Model/Entities/MetadataFields.cs | 6 +++++- .../Movies/MovieDbImagesProvider.cs | 12 ++++++++---- .../Movies/MovieDbPersonImageProvider.cs | 8 +++++--- MediaBrowser.Providers/Music/FanArtAlbumProvider.cs | 8 +++++--- MediaBrowser.Providers/Music/FanArtArtistProvider.cs | 12 ++++++------ MediaBrowser.Providers/Music/LastFmImageProvider.cs | 2 +- MediaBrowser.Providers/TV/FanArtSeasonProvider.cs | 10 ++++++---- MediaBrowser.Providers/TV/FanArtTVProvider.cs | 2 +- MediaBrowser.Providers/TV/TvdbPersonImageProvider.cs | 3 ++- MediaBrowser.Providers/TV/TvdbSeasonProvider.cs | 9 ++++++--- MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs | 9 ++++++--- 11 files changed, 51 insertions(+), 30 deletions(-) diff --git a/MediaBrowser.Model/Entities/MetadataFields.cs b/MediaBrowser.Model/Entities/MetadataFields.cs index 85f2da31e0..9f72d812e7 100644 --- a/MediaBrowser.Model/Entities/MetadataFields.cs +++ b/MediaBrowser.Model/Entities/MetadataFields.cs @@ -41,6 +41,10 @@ namespace MediaBrowser.Model.Entities /// /// The official rating /// - OfficialRating + OfficialRating, + /// + /// The images + /// + Images } } diff --git a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs index d63fcec5c0..9084316c9e 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs @@ -132,7 +132,9 @@ namespace MediaBrowser.Providers.Movies } // Don't refresh if we already have both poster and backdrop and we're not refreshing images - if (item.HasImage(ImageType.Primary) && item.BackdropImagePaths.Count >= ConfigurationManager.Configuration.MaxBackdrops) + if (item.HasImage(ImageType.Primary) && + item.BackdropImagePaths.Count >= ConfigurationManager.Configuration.MaxBackdrops && + !item.LockedFields.Contains(MetadataFields.Images)) { return false; } @@ -166,9 +168,11 @@ namespace MediaBrowser.Providers.Movies /// Task{System.Boolean}. public override async Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbImageProvider.ProviderName).ConfigureAwait(false); - - await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbImageProvider.ProviderName).ConfigureAwait(false); + await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; diff --git a/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs index 8fa2ea2499..03fd8d0a37 100644 --- a/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs @@ -163,9 +163,11 @@ namespace MediaBrowser.Providers.Movies /// Task{System.Boolean}. public override async Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbPersonImageProvider.ProviderName).ConfigureAwait(false); - - await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbPersonImageProvider.ProviderName).ConfigureAwait(false); + await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs index 2e072b0983..b6e0d61f75 100644 --- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs @@ -154,9 +154,11 @@ namespace MediaBrowser.Providers.Music /// Task{System.Boolean}. public override async Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartAlbumProvider.ProviderName).ConfigureAwait(false); - - await FetchFromXml(item, images.ToList(), cancellationToken).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartAlbumProvider.ProviderName).ConfigureAwait(false); + await FetchFromXml(item, images.ToList(), cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs index 57a191ab13..c5da218bb9 100644 --- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs @@ -212,14 +212,14 @@ namespace MediaBrowser.Providers.Music await DownloadArtistXml(artistDataPath, musicBrainzId, cancellationToken).ConfigureAwait(false); } - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary) + if (!item.LockedFields.Contains(MetadataFields.Images) && + (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary)) { var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartArtistProvider.ProviderName).ConfigureAwait(false); - await FetchFromXml(item, images.ToList(), cancellationToken).ConfigureAwait(false); } diff --git a/MediaBrowser.Providers/Music/LastFmImageProvider.cs b/MediaBrowser.Providers/Music/LastFmImageProvider.cs index 2a30a3a2e4..98ba58fa8b 100644 --- a/MediaBrowser.Providers/Music/LastFmImageProvider.cs +++ b/MediaBrowser.Providers/Music/LastFmImageProvider.cs @@ -90,7 +90,7 @@ namespace MediaBrowser.Providers.Music ? ConfigurationManager.Configuration.DownloadMusicAlbumImages : ConfigurationManager.Configuration.DownloadMusicArtistImages; - if (configSetting.Primary && !item.HasImage(ImageType.Primary)) + if (configSetting.Primary && !item.HasImage(ImageType.Primary) && !item.LockedFields.Contains(MetadataFields.Images)) { var image = images.FirstOrDefault(i => i.Type == ImageType.Primary); diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs index 713a95b26c..b1602bfd36 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs @@ -103,10 +103,12 @@ namespace MediaBrowser.Providers.TV var season = (Season)item; - // Process images - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartSeasonImageProvider.ProviderName).ConfigureAwait(false); - - await FetchImages(season, images.ToList(), cancellationToken).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + // Process images + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartSeasonImageProvider.ProviderName).ConfigureAwait(false); + await FetchImages(season, images.ToList(), cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; diff --git a/MediaBrowser.Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Providers/TV/FanArtTVProvider.cs index 90af81ec37..8bb56dabd4 100644 --- a/MediaBrowser.Providers/TV/FanArtTVProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtTVProvider.cs @@ -167,7 +167,7 @@ namespace MediaBrowser.Providers.TV var seriesId = item.GetProviderId(MetadataProviders.Tvdb); - if (!string.IsNullOrEmpty(seriesId)) + if (!string.IsNullOrEmpty(seriesId) && !item.LockedFields.Contains(MetadataFields.Images)) { var xmlPath = GetFanartXmlPath(seriesId); diff --git a/MediaBrowser.Providers/TV/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/TV/TvdbPersonImageProvider.cs index 3a503ea209..f2ce92efd6 100644 --- a/MediaBrowser.Providers/TV/TvdbPersonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbPersonImageProvider.cs @@ -75,9 +75,10 @@ namespace MediaBrowser.Providers.TV SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; } + private async Task DownloadImages(BaseItem item, List images, CancellationToken cancellationToken) { - if (!item.HasImage(ImageType.Primary)) + if (!item.HasImage(ImageType.Primary) && !item.LockedFields.Contains(MetadataFields.Images)) { var image = images.FirstOrDefault(i => i.Type == ImageType.Primary); diff --git a/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs b/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs index c5e5327c33..76e70d772a 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs @@ -147,11 +147,14 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeasonImageProvider.ProviderName).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeasonImageProvider.ProviderName).ConfigureAwait(false); - const int backdropLimit = 1; + const int backdropLimit = 1; - await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); + await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; diff --git a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs index c1ac0e3860..752ce0280b 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs @@ -155,11 +155,14 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeriesImageProvider.ProviderName).ConfigureAwait(false); + if (!item.LockedFields.Contains(MetadataFields.Images)) + { + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeriesImageProvider.ProviderName).ConfigureAwait(false); - const int backdropLimit = 1; + const int backdropLimit = 1; - await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); + await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); + } SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; From f0d0e1b94da6d329cb6c0acc826455dc5c739b1d Mon Sep 17 00:00:00 2001 From: Thomas Gillen Date: Sun, 15 Dec 2013 18:33:07 +0000 Subject: [PATCH 2/2] Added Backdrops and Screenshots to MetadataFields --- MediaBrowser.Model/Entities/MetadataFields.cs | 10 +- .../Movies/MovieDbImagesProvider.cs | 14 +-- .../Movies/MovieDbPersonImageProvider.cs | 9 +- .../Music/FanArtArtistProvider.cs | 89 +++++++++--------- .../TV/FanArtSeasonProvider.cs | 13 +-- MediaBrowser.Providers/TV/FanArtTVProvider.cs | 93 ++++++++++--------- .../TV/TvdbSeasonProvider.cs | 28 +++--- .../TV/TvdbSeriesImageProvider.cs | 50 +++++----- 8 files changed, 159 insertions(+), 147 deletions(-) diff --git a/MediaBrowser.Model/Entities/MetadataFields.cs b/MediaBrowser.Model/Entities/MetadataFields.cs index 9f72d812e7..a99fd0fe01 100644 --- a/MediaBrowser.Model/Entities/MetadataFields.cs +++ b/MediaBrowser.Model/Entities/MetadataFields.cs @@ -45,6 +45,14 @@ namespace MediaBrowser.Model.Entities /// /// The images /// - Images + Images, + /// + /// The backdrops + /// + Backdrops, + /// + /// The screenshots + /// + Screenshots } } diff --git a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs index 9084316c9e..c512eb8897 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs @@ -168,11 +168,8 @@ namespace MediaBrowser.Providers.Movies /// Task{System.Boolean}. public override async Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) { - if (!item.LockedFields.Contains(MetadataFields.Images)) - { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbImageProvider.ProviderName).ConfigureAwait(false); - await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); - } + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbImageProvider.ProviderName).ConfigureAwait(false); + await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; @@ -194,7 +191,7 @@ namespace MediaBrowser.Providers.Movies .ToList(); // poster - if (eligiblePosters.Count > 0 && !item.HasImage(ImageType.Primary)) + if (eligiblePosters.Count > 0 && !item.HasImage(ImageType.Primary) && !item.LockedFields.Contains(MetadataFields.Images)) { var poster = eligiblePosters[0]; @@ -220,7 +217,10 @@ namespace MediaBrowser.Providers.Movies var backdropLimit = ConfigurationManager.Configuration.MaxBackdrops; // backdrops - only download if earlier providers didn't find any (fanart) - if (eligibleBackdrops.Count > 0 && ConfigurationManager.Configuration.DownloadMovieImages.Backdrops && item.BackdropImagePaths.Count < backdropLimit) + if (eligibleBackdrops.Count > 0 && + ConfigurationManager.Configuration.DownloadMovieImages.Backdrops && + item.BackdropImagePaths.Count < backdropLimit && + !item.LockedFields.Contains(MetadataFields.Backdrops)) { for (var i = 0; i < eligibleBackdrops.Count; i++) { diff --git a/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs index 03fd8d0a37..f6c908a7c5 100644 --- a/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbPersonImageProvider.cs @@ -163,11 +163,8 @@ namespace MediaBrowser.Providers.Movies /// Task{System.Boolean}. public override async Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) { - if (!item.LockedFields.Contains(MetadataFields.Images)) - { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbPersonImageProvider.ProviderName).ConfigureAwait(false); - await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); - } + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualMovieDbPersonImageProvider.ProviderName).ConfigureAwait(false); + await ProcessImages(item, images.ToList(), cancellationToken).ConfigureAwait(false); SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; @@ -189,7 +186,7 @@ namespace MediaBrowser.Providers.Movies .ToList(); // poster - if (eligiblePosters.Count > 0 && !item.HasImage(ImageType.Primary)) + if (eligiblePosters.Count > 0 && !item.HasImage(ImageType.Primary) && !item.LockedFields.Contains(MetadataFields.Images)) { var poster = eligiblePosters[0]; diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs index c5da218bb9..454d56daf4 100644 --- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs @@ -212,12 +212,11 @@ namespace MediaBrowser.Providers.Music await DownloadArtistXml(artistDataPath, musicBrainzId, cancellationToken).ConfigureAwait(false); } - if (!item.LockedFields.Contains(MetadataFields.Images) && - (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo || - ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary)) + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo || + ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary) { var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartArtistProvider.ProviderName).ConfigureAwait(false); await FetchFromXml(item, images.ToList(), cancellationToken).ConfigureAwait(false); @@ -268,46 +267,52 @@ namespace MediaBrowser.Providers.Music /// Task. private async Task FetchFromXml(BaseItem item, List images , CancellationToken cancellationToken) { - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary && !item.HasImage(ImageType.Primary)) + if (!item.LockedFields.Contains(MetadataFields.Images)) { - await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); - } + cancellationToken.ThrowIfCancellationRequested(); - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo && !item.HasImage(ImageType.Logo)) - { - await SaveImage(item, images, ImageType.Logo, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art && !item.HasImage(ImageType.Art)) - { - await SaveImage(item, images, ImageType.Art, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner && !item.HasImage(ImageType.Banner)) - { - await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - var backdropLimit = ConfigurationManager.Configuration.MaxBackdrops; - if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops && - item.BackdropImagePaths.Count < backdropLimit) - { - foreach (var image in images.Where(i => i.Type == ImageType.Backdrop)) + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Primary && !item.HasImage(ImageType.Primary)) { - await _providerManager.SaveImage(item, image.Url, FanArtResourcePool, ImageType.Backdrop, null, cancellationToken) - .ConfigureAwait(false); + await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); + } - if (item.BackdropImagePaths.Count >= backdropLimit) break; + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Logo && !item.HasImage(ImageType.Logo)) + { + await SaveImage(item, images, ImageType.Logo, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Art && !item.HasImage(ImageType.Art)) + { + await SaveImage(item, images, ImageType.Art, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Banner && !item.HasImage(ImageType.Banner)) + { + await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); + } + } + + if (!item.LockedFields.Contains(MetadataFields.Backdrops)) + { + cancellationToken.ThrowIfCancellationRequested(); + + var backdropLimit = ConfigurationManager.Configuration.MaxBackdrops; + if (ConfigurationManager.Configuration.DownloadMusicArtistImages.Backdrops && + item.BackdropImagePaths.Count < backdropLimit) + { + foreach (var image in images.Where(i => i.Type == ImageType.Backdrop)) + { + await _providerManager.SaveImage(item, image.Url, FanArtResourcePool, ImageType.Backdrop, null, cancellationToken) + .ConfigureAwait(false); + + if (item.BackdropImagePaths.Count >= backdropLimit) break; + } } } } diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs index b1602bfd36..50ce72a89d 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs @@ -101,14 +101,11 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - var season = (Season)item; + var season = (Season) item; - if (!item.LockedFields.Contains(MetadataFields.Images)) - { - // Process images - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartSeasonImageProvider.ProviderName).ConfigureAwait(false); - await FetchImages(season, images.ToList(), cancellationToken).ConfigureAwait(false); - } + // Process images + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualFanartSeasonImageProvider.ProviderName).ConfigureAwait(false); + await FetchImages(season, images.ToList(), cancellationToken).ConfigureAwait(false); SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; @@ -123,7 +120,7 @@ namespace MediaBrowser.Providers.TV /// Task. private async Task FetchImages(Season season, List images, CancellationToken cancellationToken) { - if (ConfigurationManager.Configuration.DownloadSeasonImages.Thumb && !season.HasImage(ImageType.Thumb)) + if (ConfigurationManager.Configuration.DownloadSeasonImages.Thumb && !season.HasImage(ImageType.Thumb) && !season.LockedFields.Contains(MetadataFields.Images)) { await SaveImage(season, images, ImageType.Thumb, cancellationToken).ConfigureAwait(false); } diff --git a/MediaBrowser.Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Providers/TV/FanArtTVProvider.cs index 8bb56dabd4..d939951fb8 100644 --- a/MediaBrowser.Providers/TV/FanArtTVProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtTVProvider.cs @@ -167,7 +167,7 @@ namespace MediaBrowser.Providers.TV var seriesId = item.GetProviderId(MetadataProviders.Tvdb); - if (!string.IsNullOrEmpty(seriesId) && !item.LockedFields.Contains(MetadataFields.Images)) + if (!string.IsNullOrEmpty(seriesId)) { var xmlPath = GetFanartXmlPath(seriesId); @@ -196,56 +196,61 @@ namespace MediaBrowser.Providers.TV /// Task. private async Task FetchFromXml(BaseItem item, List images, CancellationToken cancellationToken) { - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Primary && !item.HasImage(ImageType.Primary)) + if (!item.LockedFields.Contains(MetadataFields.Images)) { - await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); - } + cancellationToken.ThrowIfCancellationRequested(); - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Logo && !item.HasImage(ImageType.Logo)) - { - await SaveImage(item, images, ImageType.Logo, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Art && !item.HasImage(ImageType.Art)) - { - await SaveImage(item, images, ImageType.Art, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Thumb && !item.HasImage(ImageType.Thumb)) - { - await SaveImage(item, images, ImageType.Thumb, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Banner && !item.HasImage(ImageType.Banner)) - { - await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); - } - - cancellationToken.ThrowIfCancellationRequested(); - - var backdropLimit = ConfigurationManager.Configuration.MaxBackdrops; - if (ConfigurationManager.Configuration.DownloadSeriesImages.Backdrops && - item.BackdropImagePaths.Count < backdropLimit) - { - foreach (var image in images.Where(i => i.Type == ImageType.Backdrop)) + if (ConfigurationManager.Configuration.DownloadSeriesImages.Primary && !item.HasImage(ImageType.Primary)) { - await _providerManager.SaveImage(item, image.Url, FanArtResourcePool, ImageType.Backdrop, null, cancellationToken) - .ConfigureAwait(false); + await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); + } - if (item.BackdropImagePaths.Count >= backdropLimit) break; + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadSeriesImages.Logo && !item.HasImage(ImageType.Logo)) + { + await SaveImage(item, images, ImageType.Logo, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadSeriesImages.Art && !item.HasImage(ImageType.Art)) + { + await SaveImage(item, images, ImageType.Art, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadSeriesImages.Thumb && !item.HasImage(ImageType.Thumb)) + { + await SaveImage(item, images, ImageType.Thumb, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (ConfigurationManager.Configuration.DownloadSeriesImages.Banner && !item.HasImage(ImageType.Banner)) + { + await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); } } + if (!item.LockedFields.Contains(MetadataFields.Backdrops)) + { + cancellationToken.ThrowIfCancellationRequested(); + + var backdropLimit = ConfigurationManager.Configuration.MaxBackdrops; + if (ConfigurationManager.Configuration.DownloadSeriesImages.Backdrops && + item.BackdropImagePaths.Count < backdropLimit) + { + foreach (var image in images.Where(i => i.Type == ImageType.Backdrop)) + { + await _providerManager.SaveImage(item, image.Url, FanArtResourcePool, ImageType.Backdrop, null, cancellationToken) + .ConfigureAwait(false); + + if (item.BackdropImagePaths.Count >= backdropLimit) break; + } + } + } } private async Task SaveImage(BaseItem item, List images, ImageType type, CancellationToken cancellationToken) diff --git a/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs b/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs index 76e70d772a..17ed6b5a24 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeasonProvider.cs @@ -147,14 +147,11 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - if (!item.LockedFields.Contains(MetadataFields.Images)) - { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeasonImageProvider.ProviderName).ConfigureAwait(false); + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeasonImageProvider.ProviderName).ConfigureAwait(false); - const int backdropLimit = 1; + const int backdropLimit = 1; - await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); - } + await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; @@ -162,17 +159,20 @@ namespace MediaBrowser.Providers.TV private async Task DownloadImages(BaseItem item, List images, int backdropLimit, CancellationToken cancellationToken) { - if (!item.HasImage(ImageType.Primary)) + if (!item.LockedFields.Contains(MetadataFields.Images)) { - await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); + if (!item.HasImage(ImageType.Primary)) + { + await SaveImage(item, images, ImageType.Primary, cancellationToken).ConfigureAwait(false); + } + + if (ConfigurationManager.Configuration.DownloadSeasonImages.Banner && !item.HasImage(ImageType.Banner)) + { + await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); + } } - if (ConfigurationManager.Configuration.DownloadSeasonImages.Banner && !item.HasImage(ImageType.Banner)) - { - await SaveImage(item, images, ImageType.Banner, cancellationToken).ConfigureAwait(false); - } - - if (ConfigurationManager.Configuration.DownloadSeasonImages.Backdrops && item.BackdropImagePaths.Count < backdropLimit) + if (ConfigurationManager.Configuration.DownloadSeasonImages.Backdrops && item.BackdropImagePaths.Count < backdropLimit && !item.LockedFields.Contains(MetadataFields.Backdrops)) { foreach (var backdrop in images.Where(i => i.Type == ImageType.Backdrop)) { diff --git a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs index 752ce0280b..9220b8fa06 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs @@ -143,7 +143,7 @@ namespace MediaBrowser.Providers.TV } return base.NeedsRefreshInternal(item, providerInfo); } - + /// /// Fetches metadata and returns true or false indicating if any work that requires persistence was done /// @@ -155,14 +155,11 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - if (!item.LockedFields.Contains(MetadataFields.Images)) - { - var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeriesImageProvider.ProviderName).ConfigureAwait(false); + var images = await _providerManager.GetAvailableRemoteImages(item, cancellationToken, ManualTvdbSeriesImageProvider.ProviderName).ConfigureAwait(false); - const int backdropLimit = 1; + const int backdropLimit = 1; - await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); - } + await DownloadImages(item, images.ToList(), backdropLimit, cancellationToken).ConfigureAwait(false); SetLastRefreshed(item, DateTime.UtcNow, providerInfo); return true; @@ -170,29 +167,32 @@ namespace MediaBrowser.Providers.TV private async Task DownloadImages(BaseItem item, List images, int backdropLimit, CancellationToken cancellationToken) { - if (!item.HasImage(ImageType.Primary)) + if (!item.LockedFields.Contains(MetadataFields.Images)) { - var image = images.FirstOrDefault(i => i.Type == ImageType.Primary); - - if (image != null) + if (!item.HasImage(ImageType.Primary)) { - await _providerManager.SaveImage(item, image.Url, TvdbSeriesProvider.Current.TvDbResourcePool, ImageType.Primary, null, cancellationToken) - .ConfigureAwait(false); + var image = images.FirstOrDefault(i => i.Type == ImageType.Primary); + + if (image != null) + { + await _providerManager.SaveImage(item, image.Url, TvdbSeriesProvider.Current.TvDbResourcePool, ImageType.Primary, null, cancellationToken) + .ConfigureAwait(false); + } + } + + if (ConfigurationManager.Configuration.DownloadSeriesImages.Banner && !item.HasImage(ImageType.Banner)) + { + var image = images.FirstOrDefault(i => i.Type == ImageType.Banner); + + if (image != null) + { + await _providerManager.SaveImage(item, image.Url, TvdbSeriesProvider.Current.TvDbResourcePool, ImageType.Banner, null, cancellationToken) + .ConfigureAwait(false); + } } } - if (ConfigurationManager.Configuration.DownloadSeriesImages.Banner && !item.HasImage(ImageType.Banner)) - { - var image = images.FirstOrDefault(i => i.Type == ImageType.Banner); - - if (image != null) - { - await _providerManager.SaveImage(item, image.Url, TvdbSeriesProvider.Current.TvDbResourcePool, ImageType.Banner, null, cancellationToken) - .ConfigureAwait(false); - } - } - - if (ConfigurationManager.Configuration.DownloadSeriesImages.Backdrops && item.BackdropImagePaths.Count < backdropLimit) + if (ConfigurationManager.Configuration.DownloadSeriesImages.Backdrops && item.BackdropImagePaths.Count < backdropLimit && !item.LockedFields.Contains(MetadataFields.Backdrops)) { foreach (var backdrop in images.Where(i => i.Type == ImageType.Backdrop && (!i.Width.HasValue ||