diff --git a/Jellyfin.Api/Controllers/ItemLookupController.cs b/Jellyfin.Api/Controllers/ItemLookupController.cs index 4161e43f6a..9cc23dc4f5 100644 --- a/Jellyfin.Api/Controllers/ItemLookupController.cs +++ b/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); diff --git a/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs index 08d129a82e..9f40f8a2c1 100644 --- a/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs @@ -27,6 +27,11 @@ namespace MediaBrowser.Controller.Providers public bool IsAutomated { get; set; } + /// + /// Gets or sets a value indicating whether the action is an identify. + /// + public bool IsIdentify { get; set; } + public bool IsReplacingImage(ImageType type) { return ImageRefreshMode == MetadataRefreshMode.FullRefresh && diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 32be181dd6..80ee320303 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/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(), false, false); + if (!options.IsIdentify) + { + // Keep metadata for fields that the new metadata doesn't have populated + MergeData(metadata, temp, Array.Empty(), false, false); + } + MergeData(temp, metadata, item.LockedFields, true, false); } }