using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using System.Linq; namespace MediaBrowser.Providers.Music { public static class Extensions { public static string GetAlbumArtist(this AlbumInfo info) { var id = info.SongInfos.SelectMany(i => i.AlbumArtists) .FirstOrDefault(i => !string.IsNullOrEmpty(i)); if (!string.IsNullOrEmpty(id)) { return id; } return info.AlbumArtists.FirstOrDefault(); } public static string GetReleaseGroupId(this AlbumInfo info) { var id = info.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup); if (string.IsNullOrEmpty(id)) { return info.SongInfos.Select(i => i.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup)) .FirstOrDefault(i => !string.IsNullOrEmpty(i)); } return id; } public static string GetReleaseId(this AlbumInfo info) { var id = info.GetProviderId(MetadataProviders.MusicBrainzAlbum); if (string.IsNullOrEmpty(id)) { return info.SongInfos.Select(i => i.GetProviderId(MetadataProviders.MusicBrainzAlbum)) .FirstOrDefault(i => !string.IsNullOrEmpty(i)); } return id; } public static string GetMusicBrainzArtistId(this AlbumInfo info) { string id; info.ProviderIds.TryGetValue(MetadataProviders.MusicBrainzAlbumArtist.ToString(), out id); if (string.IsNullOrEmpty(id)) { info.ArtistProviderIds.TryGetValue(MetadataProviders.MusicBrainzArtist.ToString(), out id); } if (string.IsNullOrEmpty(id)) { return info.SongInfos.Select(i => i.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist)) .FirstOrDefault(i => !string.IsNullOrEmpty(i)); } return id; } public static string GetMusicBrainzArtistId(this ArtistInfo info) { string id; info.ProviderIds.TryGetValue(MetadataProviders.MusicBrainzArtist.ToString(), out id); if (string.IsNullOrEmpty(id)) { return info.SongInfos.Select(i => i.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist)) .FirstOrDefault(i => !string.IsNullOrEmpty(i)); } return id; } } }