Artist.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System.Globalization;
  2. using System.Linq;
  3. using MediaBrowser.Controller.Library;
  4. using MediaBrowser.Model.Dto;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Runtime.Serialization;
  8. using MediaBrowser.Model.Entities;
  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. /// <summary>
  22. /// Gets the user data key.
  23. /// </summary>
  24. /// <returns>System.String.</returns>
  25. public override string GetUserDataKey()
  26. {
  27. return "Artist-" + Name;
  28. }
  29. [IgnoreDataMember]
  30. public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
  31. /// <summary>
  32. /// Finds the music artist.
  33. /// </summary>
  34. /// <param name="artist">The artist.</param>
  35. /// <param name="libraryManager">The library manager.</param>
  36. /// <returns>MusicArtist.</returns>
  37. public static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager)
  38. {
  39. return FindMusicArtist(artist, libraryManager.RootFolder.RecursiveChildren.OfType<MusicArtist>());
  40. }
  41. /// <summary>
  42. /// Finds the music artist.
  43. /// </summary>
  44. /// <param name="artist">The artist.</param>
  45. /// <param name="allMusicArtists">All music artists.</param>
  46. /// <returns>MusicArtist.</returns>
  47. public static MusicArtist FindMusicArtist(Artist artist, IEnumerable<MusicArtist> allMusicArtists)
  48. {
  49. var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz);
  50. return allMusicArtists.FirstOrDefault(i =>
  51. {
  52. if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase))
  53. {
  54. return true;
  55. }
  56. return string.Compare(i.Name, artist.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0;
  57. });
  58. }
  59. }
  60. }