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

Only remove images in metadata folder by default (#12631)

gnattu 8 месяцев назад
Родитель
Сommit
90a00e1293

+ 8 - 2
MediaBrowser.Providers/Manager/ItemImageProvider.cs

@@ -68,16 +68,22 @@ namespace MediaBrowser.Providers.Manager
         /// Removes all existing images from the provided item.
         /// Removes all existing images from the provided item.
         /// </summary>
         /// </summary>
         /// <param name="item">The <see cref="BaseItem"/> to remove images from.</param>
         /// <param name="item">The <see cref="BaseItem"/> to remove images from.</param>
+        /// <param name="canDeleteLocal">Whether removing images outside metadata folder is allowed.</param>
         /// <returns><c>true</c> if changes were made to the item; otherwise <c>false</c>.</returns>
         /// <returns><c>true</c> if changes were made to the item; otherwise <c>false</c>.</returns>
-        public bool RemoveImages(BaseItem item)
+        public bool RemoveImages(BaseItem item, bool canDeleteLocal = false)
         {
         {
             var singular = new List<ItemImageInfo>();
             var singular = new List<ItemImageInfo>();
+            var itemMetadataPath = item.GetInternalMetadataPath();
             for (var i = 0; i < _singularImages.Length; i++)
             for (var i = 0; i < _singularImages.Length; i++)
             {
             {
                 var currentImage = item.GetImageInfo(_singularImages[i], 0);
                 var currentImage = item.GetImageInfo(_singularImages[i], 0);
                 if (currentImage is not null)
                 if (currentImage is not null)
                 {
                 {
-                    singular.Add(currentImage);
+                    var imageInMetadataFolder = currentImage.Path.StartsWith(itemMetadataPath, StringComparison.OrdinalIgnoreCase);
+                    if (imageInMetadataFolder || canDeleteLocal || item.IsSaveLocalMetadataEnabled())
+                    {
+                        singular.Add(currentImage);
+                    }
                 }
                 }
             }
             }
 
 

+ 1 - 0
tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs

@@ -580,6 +580,7 @@ namespace Jellyfin.Providers.Tests.Manager
                 CallBase = true
                 CallBase = true
             };
             };
             item.Setup(m => m.IsSaveLocalMetadataEnabled()).Returns(false);
             item.Setup(m => m.IsSaveLocalMetadataEnabled()).Returns(false);
+            item.Setup(m => m.GetInternalMetadataPath()).Returns(string.Empty);
 
 
             var path = validPaths ? _testDataImagePath.Format : "invalid path {0}";
             var path = validPaths ? _testDataImagePath.Format : "invalid path {0}";
             for (int i = 0; i < count; i++)
             for (int i = 0; i < count; i++)