Просмотр исходного кода

Backport pull request #15766 from jellyfin/release-10.11.z

Fix backdrop images being deleted when stored with media

Original-merge: 12c5d6b63650c34a25609066a0138d37032eb7c2

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
theguymadmax 18 часов назад
Родитель
Сommit
afc083e9fa
1 измененных файлов с 38 добавлено и 4 удалено
  1. 38 4
      MediaBrowser.Providers/Manager/ItemImageProvider.cs

+ 38 - 4
MediaBrowser.Providers/Manager/ItemImageProvider.cs

@@ -88,7 +88,15 @@ namespace MediaBrowser.Providers.Manager
                 }
             }
 
-            singular.AddRange(item.GetImages(ImageType.Backdrop));
+            foreach (var backdrop in item.GetImages(ImageType.Backdrop))
+            {
+                var imageInMetadataFolder = backdrop.Path.StartsWith(itemMetadataPath, StringComparison.OrdinalIgnoreCase);
+                if (imageInMetadataFolder || canDeleteLocal || item.IsSaveLocalMetadataEnabled())
+                {
+                    singular.Add(backdrop);
+                }
+            }
+
             PruneImages(item, singular);
 
             return singular.Count > 0;
@@ -466,10 +474,36 @@ namespace MediaBrowser.Providers.Manager
                 }
             }
 
-            if (UpdateMultiImages(item, images, ImageType.Backdrop))
+            bool hasBackdrop = false;
+            bool backdropStoredWithMedia = false;
+
+            foreach (var image in images)
             {
-                changed = true;
-                foundImageTypes.Add(ImageType.Backdrop);
+                if (image.Type != ImageType.Backdrop)
+                {
+                    continue;
+                }
+
+                hasBackdrop = true;
+
+                if (item.ContainingFolderPath is not null && item.ContainingFolderPath.Contains(Path.GetDirectoryName(image.FileInfo.FullName), StringComparison.OrdinalIgnoreCase))
+                {
+                    backdropStoredWithMedia = true;
+                    break;
+                }
+            }
+
+            if (hasBackdrop)
+            {
+                if (UpdateMultiImages(item, images, ImageType.Backdrop))
+                {
+                    changed = true;
+                }
+
+                if (backdropStoredWithMedia)
+                {
+                    foundImageTypes.Add(ImageType.Backdrop);
+                }
             }
 
             if (foundImageTypes.Count > 0)