aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/MediaInfo/AudioFileProber.cs36
1 files changed, 34 insertions, 2 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
index 587cb4092..869e3f292 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
@@ -533,14 +533,14 @@ namespace MediaBrowser.Providers.MediaInfo
private bool TryGetSanitizedAdditionalFields(Track track, string field, out string? value)
{
- var hasField = track.AdditionalFields.TryGetValue(field, out value);
+ var hasField = TryGetAdditionalFieldWithFallback(track, field, out value);
value = GetSanitizedStringTag(value, track.Path);
return hasField;
}
private bool TryGetSanitizedUFIDFields(Track track, out string? owner, out string? identifier)
{
- var hasField = track.AdditionalFields.TryGetValue("UFID", out string? value);
+ var hasField = TryGetAdditionalFieldWithFallback(track, "UFID", out string? value);
if (hasField && !string.IsNullOrEmpty(value))
{
string[] parts = value.Split('\0');
@@ -556,5 +556,37 @@ namespace MediaBrowser.Providers.MediaInfo
identifier = null;
return false;
}
+
+ // Build the explicit mka-style fallback key (e.g., ARTISTS -> track.artists, "MusicBrainz Artist Id" -> track.musicbrainz_artist_id)
+ private static string GetMkaFallbackKey(string key)
+ {
+ if (string.IsNullOrWhiteSpace(key))
+ {
+ return key;
+ }
+
+ var normalized = key.Trim().Replace(' ', '_').ToLowerInvariant();
+ return "track." + normalized;
+ }
+
+ // First try the normal key exactly; if missing, try the mka-style fallback key.
+ private bool TryGetAdditionalFieldWithFallback(Track track, string key, out string? value)
+ {
+ // Prefer the normal key (as-is, case-sensitive)
+ if (track.AdditionalFields.TryGetValue(key, out value))
+ {
+ return true;
+ }
+
+ // Fallback to mka-style: "track." + lower-case(original key)
+ var fallbackKey = GetMkaFallbackKey(key);
+ if (track.AdditionalFields.TryGetValue(fallbackKey, out value))
+ {
+ return true;
+ }
+
+ value = null;
+ return false;
+ }
}
}