using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; namespace MediaBrowser.Controller.Entities.Audio { /// /// Class MusicAlbum /// public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres { public List SoundtrackIds { get; set; } public MusicAlbum() { Artists = new List(); SoundtrackIds = new List(); } public string LastFmImageUrl { get; set; } public string LastFmImageSize { get; set; } /// /// Songs will group into us so don't also include us in the index /// /// true if [include in index]; otherwise, false. [IgnoreDataMember] public override bool IncludeInIndex { get { return false; } } /// /// Override this to true if class should be grouped under a container in indicies /// The container class should be defined via IndexContainer /// /// true if [group in index]; otherwise, false. [IgnoreDataMember] public override bool GroupInIndex { get { return true; } } /// /// The unknwon artist /// private static readonly MusicArtist UnknwonArtist = new MusicArtist { Name = "" }; /// /// Override this to return the folder that should be used to construct a container /// for this item in an index. GroupInIndex should be true as well. /// /// The index container. [IgnoreDataMember] public override Folder IndexContainer { get { return Parent as MusicArtist ?? UnknwonArtist; } } /// /// Determines whether the specified artist has artist. /// /// The artist. /// true if the specified artist has artist; otherwise, false. public bool HasArtist(string artist) { return string.Equals(AlbumArtist, artist, StringComparison.OrdinalIgnoreCase) || Artists.Contains(artist, StringComparer.OrdinalIgnoreCase); } public string AlbumArtist { get; set; } public List Artists { get; set; } /// /// Gets the user data key. /// /// System.String. public override string GetUserDataKey() { var id = this.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup); if (!string.IsNullOrEmpty(id)) { return "MusicAlbum-MusicBrainzReleaseGroup-" + id; } id = this.GetProviderId(MetadataProviders.Musicbrainz); if (!string.IsNullOrEmpty(id)) { return "MusicAlbum-Musicbrainz-" + id; } return base.GetUserDataKey(); } } public class MusicAlbumDisc : Folder { } }