diff options
| author | Shadowghost <Shadowghost@users.noreply.github.com> | 2024-06-24 20:29:03 -0400 |
|---|---|---|
| committer | Joshua M. Boniface <joshua@boniface.me> | 2024-06-24 20:29:03 -0400 |
| commit | bd3645cbb064b0976199012c7e39513213206b84 (patch) | |
| tree | 6cde088b89eb94a3e2c59b84732ca493aa79485f | |
| parent | e2ca6e92e493f244f26a5042c2bdb29c17d20f63 (diff) | |
Backport pull request #12055 from jellyfin/release-10.9.z
Fix season backdrops
Original-merge: 2266a003372826e8f9a6367cbe9070aa2d1b4b82
Merged-by: Bond-009 <bond.009@outlook.com>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
| -rw-r--r-- | MediaBrowser.Providers/Manager/ImageSaver.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ItemImageProvider.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 28 |
3 files changed, 25 insertions, 18 deletions
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 4b3b0a14d..9a676cb2e 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -427,13 +427,15 @@ namespace MediaBrowser.Providers.Manager if (type == ImageType.Backdrop && saveLocally) { - if (season is not null && season.IndexNumber.HasValue) + if (season is not null + && season.IndexNumber.HasValue + && (imageIndex is null || imageIndex == 0)) { var seriesFolder = season.SeriesPath; var seasonMarker = season.IndexNumber.Value == 0 - ? "-specials" - : season.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture); + ? "-specials" + : season.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture); var imageFilename = "season" + seasonMarker + "-fanart" + extension; diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 4690845d2..1bb7ffcce 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -159,7 +159,7 @@ namespace MediaBrowser.Providers.Manager } } - // only delete existing multi-images if new ones were added + // Only delete existing multi-images if new ones were added if (oldBackdropImages.Length > 0 && oldBackdropImages.Length < item.GetImages(ImageType.Backdrop).Count()) { PruneImages(item, oldBackdropImages); @@ -422,14 +422,11 @@ namespace MediaBrowser.Providers.Manager { var changed = item.ValidateImages(); var foundImageTypes = new List<ImageType>(); - for (var i = 0; i < _singularImages.Length; i++) { var type = _singularImages[i]; var image = GetFirstLocalImageInfoByType(images, type); - - // Only use local images if we are not replacing and saving - if (image is not null && !(item.IsSaveLocalMetadataEnabled() && refreshOptions.ReplaceAllImages)) + if (image is not null) { var currentImage = item.GetImageInfo(type, 0); // if image file is stored with media, don't replace that later diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index bab7611f7..8af4ed2a8 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -100,21 +100,29 @@ namespace MediaBrowser.Providers.Manager } } - // Start by validating images var localImagesFailed = false; var allImageProviders = ProviderManager.GetImageProviders(item, refreshOptions).ToList(); - try + + // Only validate already registered images if we are replacing and saving locally + if (item.IsSaveLocalMetadataEnabled() && refreshOptions.ReplaceAllImages) { - // Always validate images and check for new locally stored ones. - if (ImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>(), refreshOptions)) - { - updateType |= ItemUpdateType.ImageUpdate; - } + item.ValidateImages(); } - catch (Exception ex) + else { - localImagesFailed = true; - Logger.LogError(ex, "Error validating images for {Item}", item.Path ?? item.Name ?? "Unknown name"); + // Run full image validation and register new local images + try + { + if (ImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>(), refreshOptions)) + { + updateType |= ItemUpdateType.ImageUpdate; + } + } + catch (Exception ex) + { + localImagesFailed = true; + Logger.LogError(ex, "Error validating images for {Item}", item.Path ?? item.Name ?? "Unknown name"); + } } var metadataResult = new MetadataResult<TItemType> |
