From a0d4ae1974f5c569cdb828faa529d32867df0108 Mon Sep 17 00:00:00 2001 From: evan314159 <110177090+evan314159@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:22:55 +0800 Subject: Correct Album Artists merge logic (#14655) * Correct Album Artists merge logic and Artist equality checks Correct Album Artists merge logic in MetadataService that causes empty metadata sources to overwrite populated Album Artists arrays. This impacted People-to-BaseItem relationships and caused orphaned records in Peoples. Correct equality checks to be case-sensitive so Jelly metadata exactly matches file metadata. * use StringComparer.Ordinal --------- Co-authored-by: Evan --- MediaBrowser.Providers/Music/AlbumMetadataService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Providers') diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index 7c193b4d5..13511b594 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -109,14 +109,14 @@ public class AlbumMetadataService : MetadataService var albumArtists = songs .SelectMany(i => i.AlbumArtists) - .GroupBy(i => i) + .GroupBy(i => i, StringComparer.OrdinalIgnoreCase) .OrderByDescending(g => g.Count()) .Select(g => g.Key) .ToArray(); updateType |= SetProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbumArtist); - if (!item.AlbumArtists.SequenceEqual(albumArtists, StringComparer.OrdinalIgnoreCase)) + if (!item.AlbumArtists.SequenceEqual(albumArtists, StringComparer.Ordinal)) { item.AlbumArtists = albumArtists; updateType |= ItemUpdateType.MetadataEdit; @@ -131,12 +131,12 @@ public class AlbumMetadataService : MetadataService var artists = songs .SelectMany(i => i.Artists) - .GroupBy(i => i) + .GroupBy(i => i, StringComparer.OrdinalIgnoreCase) .OrderByDescending(g => g.Count()) .Select(g => g.Key) .ToArray(); - if (!item.Artists.SequenceEqual(artists, StringComparer.OrdinalIgnoreCase)) + if (!item.Artists.SequenceEqual(artists, StringComparer.Ordinal)) { item.Artists = artists; updateType |= ItemUpdateType.MetadataEdit; -- cgit v1.2.3