From 853ef727daa75f7508157400eba3a3b1af2f8c8a Mon Sep 17 00:00:00 2001
From: Joe Rogers <1337joe@gmail.com>
Date: Fri, 31 Dec 2021 17:05:02 +0100
Subject: [PATCH] Add refresh flag to remove existing data/images
Fixes #7040
---
Jellyfin.Api/Controllers/ItemLookupController.cs | 3 ++-
MediaBrowser.Controller/Providers/ImageRefreshOptions.cs | 5 +++++
MediaBrowser.Providers/Manager/MetadataService.cs | 8 ++++++--
3 files changed, 13 insertions(+), 3 deletions(-)
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);
}
}