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);