Artist.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using MediaBrowser.Controller.Library;
  2. using MediaBrowser.Model.Dto;
  3. using MediaBrowser.Model.Entities;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Globalization;
  7. using System.Linq;
  8. using System.Runtime.Serialization;
  9. namespace MediaBrowser.Controller.Entities.Audio
  10. {
  11. /// <summary>
  12. /// Class Artist
  13. /// </summary>
  14. public class Artist : BaseItem, IItemByName, IHasMusicGenres
  15. {
  16. public Artist()
  17. {
  18. UserItemCounts = new Dictionary<Guid, ItemByNameCounts>();
  19. }
  20. public string LastFmImageUrl { get; set; }
  21. public string LastFmImageSize { get; set; }
  22. /// <summary>
  23. /// Gets the user data key.
  24. /// </summary>
  25. /// <returns>System.String.</returns>
  26. public override string GetUserDataKey()
  27. {
  28. return GetUserDataKey(this);
  29. }
  30. [IgnoreDataMember]
  31. public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
  32. /// <summary>
  33. /// Finds the music artist.
  34. /// </summary>
  35. /// <param name="artist">The artist.</param>
  36. /// <param name="libraryManager">The library manager.</param>
  37. /// <returns>MusicArtist.</returns>
  38. public static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager)
  39. {
  40. return FindMusicArtist(artist, libraryManager.RootFolder.RecursiveChildren.OfType<MusicArtist>());
  41. }
  42. /// <summary>
  43. /// Finds the music artist.
  44. /// </summary>
  45. /// <param name="artist">The artist.</param>
  46. /// <param name="allMusicArtists">All music artists.</param>
  47. /// <returns>MusicArtist.</returns>
  48. public static MusicArtist FindMusicArtist(Artist artist, IEnumerable<MusicArtist> allMusicArtists)
  49. {
  50. var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz);
  51. return allMusicArtists.FirstOrDefault(i =>
  52. {
  53. if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase))
  54. {
  55. return true;
  56. }
  57. return string.Compare(i.Name, artist.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0;
  58. });
  59. }
  60. /// <summary>
  61. /// Gets the user data key.
  62. /// </summary>
  63. /// <param name="item">The item.</param>
  64. /// <returns>System.String.</returns>
  65. public static string GetUserDataKey(BaseItem item)
  66. {
  67. var id = item.GetProviderId(MetadataProviders.Musicbrainz);
  68. if (!string.IsNullOrEmpty(id))
  69. {
  70. return "Artist-Musicbrainz-" + id;
  71. }
  72. return "Artist-" + item.Name;
  73. }
  74. }
  75. }