aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/Music/AlbumMetadataService.cs85
1 files changed, 27 insertions, 58 deletions
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
index f5c88a5a5..dd982a3f9 100644
--- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
@@ -90,25 +90,7 @@ namespace MediaBrowser.Providers.Music
.Select(g => g.Key)
.ToArray();
- var musicbrainzAlbumArtistIds = songs
- .Select(i => i.GetProviderId(MetadataProvider.MusicBrainzAlbumArtist))
- .GroupBy(i => i)
- .OrderByDescending(g => g.Count())
- .Select(g => g.Key)
- .ToArray();
-
- var musicbrainzAlbumArtistId = item.GetProviderId(MetadataProvider.MusicBrainzAlbumArtist);
- if (musicbrainzAlbumArtistIds.Any())
- {
- var firstMusicbrainzAlbumArtistId = musicbrainzAlbumArtistIds[0];
- if (!string.IsNullOrEmpty(firstMusicbrainzAlbumArtistId)
- && (string.IsNullOrEmpty(musicbrainzAlbumArtistId)
- || !musicbrainzAlbumArtistId.Equals(firstMusicbrainzAlbumArtistId, StringComparison.OrdinalIgnoreCase)))
- {
- item.SetProviderId(MetadataProvider.MusicBrainzAlbumArtist, firstMusicbrainzAlbumArtistId);
- updateType |= ItemUpdateType.MetadataEdit;
- }
- }
+ updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbumArtist);
if (!item.AlbumArtists.SequenceEqual(albumArtists, StringComparer.OrdinalIgnoreCase))
{
@@ -143,45 +125,8 @@ namespace MediaBrowser.Providers.Music
{
var updateType = ItemUpdateType.None;
- var musicbrainzAlbumIds = songs
- .Select(i => i.GetProviderId(MetadataProvider.MusicBrainzAlbum))
- .GroupBy(i => i)
- .OrderByDescending(g => g.Count())
- .Select(g => g.Key)
- .ToArray();
-
- var musicbrainzAlbumId = item.GetProviderId(MetadataProvider.MusicBrainzAlbum);
- if (musicbrainzAlbumIds.Any())
- {
- var firstMusicbrainzAlbumId = musicbrainzAlbumIds[0];
- if (!string.IsNullOrEmpty(firstMusicbrainzAlbumId)
- && (string.IsNullOrEmpty(musicbrainzAlbumId)
- || !musicbrainzAlbumId.Equals(firstMusicbrainzAlbumId, StringComparison.OrdinalIgnoreCase)))
- {
- item.SetProviderId(MetadataProvider.MusicBrainzAlbum, firstMusicbrainzAlbumId);
- updateType |= ItemUpdateType.MetadataEdit;
- }
- }
-
- var musicbrainzReleaseGroupIds = songs
- .Select(i => i.GetProviderId(MetadataProvider.MusicBrainzReleaseGroup))
- .GroupBy(i => i)
- .OrderByDescending(g => g.Count())
- .Select(g => g.Key)
- .ToArray();
-
- var musicbrainzReleaseGroupId = item.GetProviderId(MetadataProvider.MusicBrainzReleaseGroup);
- if (musicbrainzReleaseGroupIds.Any())
- {
- var firstMusicbrainzReleaseGroupId = musicbrainzReleaseGroupIds[0];
- if (!string.IsNullOrEmpty(firstMusicbrainzReleaseGroupId)
- && (string.IsNullOrEmpty(musicbrainzReleaseGroupId)
- || !musicbrainzReleaseGroupId.Equals(firstMusicbrainzReleaseGroupId, StringComparison.OrdinalIgnoreCase)))
- {
- item.SetProviderId(MetadataProvider.MusicBrainzReleaseGroup, firstMusicbrainzReleaseGroupId);
- updateType |= ItemUpdateType.MetadataEdit;
- }
- }
+ updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzAlbum);
+ updateType |= setProviderIdFromSongs(item, songs, MetadataProvider.MusicBrainzReleaseGroup);
return updateType;
}
@@ -264,5 +209,29 @@ namespace MediaBrowser.Providers.Music
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;
+ }
}
}