2
0

AlbumInfoExtensions.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma warning disable CS1591
  2. using System.Linq;
  3. using MediaBrowser.Controller.Providers;
  4. using MediaBrowser.Model.Entities;
  5. namespace MediaBrowser.Providers.Music
  6. {
  7. public static class AlbumInfoExtensions
  8. {
  9. public static string? GetAlbumArtist(this AlbumInfo info)
  10. {
  11. var id = info.SongInfos.SelectMany(i => i.AlbumArtists)
  12. .FirstOrDefault(i => !string.IsNullOrEmpty(i));
  13. if (!string.IsNullOrEmpty(id))
  14. {
  15. return id;
  16. }
  17. return info.AlbumArtists.Count > 0 ? info.AlbumArtists[0] : default;
  18. }
  19. public static string? GetReleaseGroupId(this AlbumInfo info)
  20. {
  21. var id = info.GetProviderId(MetadataProvider.MusicBrainzReleaseGroup);
  22. if (string.IsNullOrEmpty(id))
  23. {
  24. return info.SongInfos.Select(i => i.GetProviderId(MetadataProvider.MusicBrainzReleaseGroup))
  25. .FirstOrDefault(i => !string.IsNullOrEmpty(i));
  26. }
  27. return id;
  28. }
  29. public static string? GetReleaseId(this AlbumInfo info)
  30. {
  31. var id = info.GetProviderId(MetadataProvider.MusicBrainzAlbum);
  32. if (string.IsNullOrEmpty(id))
  33. {
  34. return info.SongInfos.Select(i => i.GetProviderId(MetadataProvider.MusicBrainzAlbum))
  35. .FirstOrDefault(i => !string.IsNullOrEmpty(i));
  36. }
  37. return id;
  38. }
  39. public static string? GetMusicBrainzArtistId(this AlbumInfo info)
  40. {
  41. info.ProviderIds.TryGetValue(MetadataProvider.MusicBrainzAlbumArtist.ToString(), out string? id);
  42. if (string.IsNullOrEmpty(id))
  43. {
  44. info.ArtistProviderIds.TryGetValue(MetadataProvider.MusicBrainzArtist.ToString(), out id);
  45. }
  46. if (string.IsNullOrEmpty(id))
  47. {
  48. return info.SongInfos.Select(i => i.GetProviderId(MetadataProvider.MusicBrainzAlbumArtist))
  49. .FirstOrDefault(i => !string.IsNullOrEmpty(i));
  50. }
  51. return id;
  52. }
  53. public static string? GetMusicBrainzArtistId(this ArtistInfo info)
  54. {
  55. info.ProviderIds.TryGetValue(MetadataProvider.MusicBrainzArtist.ToString(), out var id);
  56. if (string.IsNullOrEmpty(id))
  57. {
  58. return info.SongInfos.Select(i => i.GetProviderId(MetadataProvider.MusicBrainzAlbumArtist))
  59. .FirstOrDefault(i => !string.IsNullOrEmpty(i));
  60. }
  61. return id;
  62. }
  63. }
  64. }