aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
diff options
context:
space:
mode:
authorCorentin Malbet <154510969+teblam@users.noreply.github.com>2025-09-26 22:24:59 +0200
committerGitHub <noreply@github.com>2025-09-26 14:24:59 -0600
commit71ebb1f456b1bb3820c05c248f3ae8f79a0f27f4 (patch)
tree6819eb8afe2d494bcd94b868cbaf23a19fe30f57 /MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
parent9c298c52f5fb35c55377c9db754c9f6a43256415 (diff)
Fixing the UFID field value giving a warning and not being correctly processed (#14851)
Diffstat (limited to 'MediaBrowser.Providers/MediaInfo/AudioFileProber.cs')
-rw-r--r--MediaBrowser.Providers/MediaInfo/AudioFileProber.cs25
1 files changed, 22 insertions, 3 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
index c0680b901..587cb4092 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs
@@ -437,12 +437,12 @@ namespace MediaBrowser.Providers.MediaInfo
{
audio.TrySetProviderId(MetadataProvider.MusicBrainzRecording, recordingMbId);
}
- else if (TryGetSanitizedAdditionalFields(track, "UFID", out var ufIdValue) && !string.IsNullOrEmpty(ufIdValue))
+ else if (TryGetSanitizedUFIDFields(track, out var owner, out var identifier) && !string.IsNullOrEmpty(owner) && !string.IsNullOrEmpty(identifier))
{
// If tagged with MB Picard, the format is 'http://musicbrainz.org\0<recording MBID>'
- if (ufIdValue.Contains("musicbrainz.org", StringComparison.OrdinalIgnoreCase))
+ if (owner.Contains("musicbrainz.org", StringComparison.OrdinalIgnoreCase))
{
- audio.TrySetProviderId(MetadataProvider.MusicBrainzRecording, ufIdValue.AsSpan().RightPart('\0').ToString());
+ audio.TrySetProviderId(MetadataProvider.MusicBrainzRecording, identifier);
}
}
}
@@ -537,5 +537,24 @@ namespace MediaBrowser.Providers.MediaInfo
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);
+ if (hasField && !string.IsNullOrEmpty(value))
+ {
+ string[] parts = value.Split('\0');
+ if (parts.Length == 2)
+ {
+ owner = GetSanitizedStringTag(parts[0], track.Path);
+ identifier = GetSanitizedStringTag(parts[1], track.Path);
+ return true;
+ }
+ }
+
+ owner = null;
+ identifier = null;
+ return false;
+ }
}
}