using System.Globalization; using System.Linq; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using System; using System.Collections.Generic; using System.Runtime.Serialization; using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Entities.Audio { /// /// Class Artist /// public class Artist : BaseItem, IItemByName, IHasMusicGenres { public Artist() { UserItemCounts = new Dictionary(); } public string LastFmImageUrl { get; set; } /// /// Gets the user data key. /// /// System.String. public override string GetUserDataKey() { return "Artist-" + Name; } [IgnoreDataMember] public Dictionary UserItemCounts { get; set; } /// /// Finds the music artist. /// /// The artist. /// The library manager. /// MusicArtist. public static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager) { return FindMusicArtist(artist, libraryManager.RootFolder.RecursiveChildren.OfType()); } /// /// Finds the music artist. /// /// The artist. /// All music artists. /// MusicArtist. public static MusicArtist FindMusicArtist(Artist artist, IEnumerable allMusicArtists) { var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz); return allMusicArtists.FirstOrDefault(i => { if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase)) { return true; } return string.Compare(i.Name, artist.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0; }); } } }