From 4e8f42f457e3da0274a81b5f538805dd43b0963e Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Tue, 28 Mar 2023 15:14:26 -0500 Subject: [PATCH] Fix multiple NFO backdrops and fix screen grabber overwriting local JPGs for video primary images. Linting: Change to ICollection Revert changes for different issue fix --- MediaBrowser.Providers/Manager/ItemImageProvider.cs | 7 ++++++- MediaBrowser.Providers/Manager/MetadataService.cs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index dab36625e5..1475509736 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -357,7 +357,12 @@ namespace MediaBrowser.Providers.Manager return true; } - private void PruneImages(BaseItem item, IReadOnlyList images) + /// + /// Delete images from an item. + /// + /// The item. + /// The images. + public void PruneImages(BaseItem item, IReadOnlyList images) { for (var i = 0; i < images.Count; i++) { diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 75291b3178..cc7e117ac9 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -688,6 +688,12 @@ namespace MediaBrowser.Providers.Manager if (localItem.HasMetadata) { + var oldBackdropImages = Array.Empty(); + if (options.IsReplacingImage(ImageType.Backdrop)) + { + oldBackdropImages = item.GetImages(ImageType.Backdrop).ToArray(); + } + foreach (var remoteImage in localItem.RemoteImages) { try @@ -710,6 +716,12 @@ namespace MediaBrowser.Providers.Manager } } + // only delete existing multi-images if new ones were added + if (oldBackdropImages.Length > 0 && oldBackdropImages.Length < item.GetImages(ImageType.Backdrop).Count()) + { + imageService.PruneImages(item, oldBackdropImages); + } + if (foundImageTypes.Count > 0) { imageService.UpdateReplaceImages(options, foundImageTypes);