浏览代码

Add refresh flag to remove existing data/images

Fixes #7040
Joe Rogers 3 年之前
父节点
当前提交
853ef727da

+ 2 - 1
Jellyfin.Api/Controllers/ItemLookupController.cs

@@ -263,7 +263,8 @@ namespace Jellyfin.Api.Controllers
                     ImageRefreshMode = MetadataRefreshMode.FullRefresh,
                     ReplaceAllMetadata = true,
                     ReplaceAllImages = replaceAllImages,
-                    SearchResult = searchResult
+                    SearchResult = searchResult,
+                    IsIdentify = true
                 },
                 CancellationToken.None).ConfigureAwait(false);
 

+ 5 - 0
MediaBrowser.Controller/Providers/ImageRefreshOptions.cs

@@ -27,6 +27,11 @@ namespace MediaBrowser.Controller.Providers
 
         public bool IsAutomated { get; set; }
 
+        /// <summary>
+        /// Gets or sets a value indicating whether the action is an identify.
+        /// </summary>
+        public bool IsIdentify { get; set; }
+
         public bool IsReplacingImage(ImageType type)
         {
             return ImageRefreshMode == MetadataRefreshMode.FullRefresh &&

+ 6 - 2
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -749,8 +749,12 @@ namespace MediaBrowser.Providers.Manager
                     }
                     else
                     {
-                        // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
-                        MergeData(metadata, temp, Array.Empty<MetadataField>(), false, false);
+                        if (!options.IsIdentify)
+                        {
+                            // Keep metadata for fields that the new metadata doesn't have populated
+                            MergeData(metadata, temp, Array.Empty<MetadataField>(), false, false);
+                        }
+
                         MergeData(temp, metadata, item.LockedFields, true, false);
                     }
                 }