mirror of https://github.com/jellyfin/jellyfin
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>
This commit is contained in:
parent
d65b18a7f3
commit
a0d4ae1974
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue