diff options
| -rw-r--r-- | MediaBrowser.Providers/Music/AlbumMetadataService.cs | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index dd982a3f9..ac40f0b3a 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -90,7 +90,7 @@ namespace MediaBrowser.Providers.Music .Select(g => g.Key) .ToArray(); - updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbumArtist); + updateType |= SetProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbumArtist); if (!item.AlbumArtists.SequenceEqual(albumArtists, StringComparer.OrdinalIgnoreCase)) { @@ -125,12 +125,48 @@ namespace MediaBrowser.Providers.Music { var updateType = ItemUpdateType.None; - updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbum); - updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzReleaseGroup); + updateType |= SetProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbum); + updateType |= SetProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzReleaseGroup); return updateType; } + private ItemUpdateType SetProviderIdFromSongs(BaseItem item, IReadOnlyList<Audio> songs, MetadataProvider provider) + { + var ids = songs + .Select(i => i.GetProviderId(provider)) + .GroupBy(i => i) + .OrderByDescending(g => g.Count()) + .Select(g => g.Key) + .ToArray(); + + var id = item.GetProviderId(provider); + if (ids.Any()) + { + var firstId = ids[0]; + if (!string.IsNullOrEmpty(firstId) + && (string.IsNullOrEmpty(id) + || !id.Equals(firstId, StringComparison.OrdinalIgnoreCase))) + { + item.SetProviderId(provider, firstId); + return ItemUpdateType.MetadataEdit; + } + } + return ItemUpdateType.None; + } + + private void SetProviderId(MusicAlbum sourceItem, MusicAlbum targetItem, MetadataProvider provider) + { + var source = sourceItem.GetProviderId(provider); + var target = targetItem.GetProviderId(provider); + if (!string.IsNullOrEmpty(source) + && (string.IsNullOrEmpty(target) + || !target.Equals(source, StringComparison.Ordinal))) + { + targetItem.SetProviderId(provider, source); + } + } + private ItemUpdateType SetPeople(MusicAlbum item) { var updateType = ItemUpdateType.None; @@ -184,54 +220,18 @@ namespace MediaBrowser.Providers.Music if (replaceData || string.IsNullOrEmpty(targetItem.GetProviderId(MetadataProvider.MusicBrainzAlbumArtist))) { - setProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzAlbumArtist); + SetProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzAlbumArtist); } if (replaceData || string.IsNullOrEmpty(targetItem.GetProviderId(MetadataProvider.MusicBrainzAlbum))) { - setProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzAlbum); + SetProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzAlbum); } if (replaceData || string.IsNullOrEmpty(targetItem.GetProviderId(MetadataProvider.MusicBrainzReleaseGroup))) { - setProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzReleaseGroup); + SetProviderId(sourceItem, targetItem, MetadataProvider.MusicBrainzReleaseGroup); } } - - private void setProviderId(MusicAlbum sourceItem, MusicAlbum targetItem, MetadataProvider provider) - { - var source = sourceItem.GetProviderId(provider); - var target = targetItem.GetProviderId(provider); - if (!string.IsNullOrEmpty(source) - && (string.IsNullOrEmpty(target) - || !target.Equals(source, StringComparison.Ordinal))) - { - targetItem.SetProviderId(provider, source); - } - } - - private ItemUpdateType setProviderIdFromSongs(BaseItem item, IReadOnlyList<Audio> songs, MetadataProvider provider) - { - var ids = songs - .Select(i => i.GetProviderId(provider)) - .GroupBy(i => i) - .OrderByDescending(g => g.Count()) - .Select(g => g.Key) - .ToArray(); - - var id = item.GetProviderId(provider); - if (ids.Any()) - { - var firstId = ids[0]; - if (!string.IsNullOrEmpty(firstId) - && (string.IsNullOrEmpty(id) - || !id.Equals(firstId, StringComparison.OrdinalIgnoreCase))) - { - item.SetProviderId(provider, firstId); - return ItemUpdateType.MetadataEdit; - } - } - return ItemUpdateType.None; - } } } |
