Explorar el Código

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 <evan@MacBook-Pro.local>
evan314159 hace 3 días
padre
commit
a0d4ae1974
Se han modificado 1 ficheros con 4 adiciones y 4 borrados
  1. 4 4
      MediaBrowser.Providers/Music/AlbumMetadataService.cs

+ 4 - 4
MediaBrowser.Providers/Music/AlbumMetadataService.cs

@@ -109,14 +109,14 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
 
         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<MusicAlbum, AlbumInfo>
 
         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;