using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; namespace MediaBrowser.Controller.Entities.Audio { /// /// Class Audio /// public class Audio : BaseItem, IHasMediaStreams { public Audio() { MediaStreams = new List(); Artists = new List(); } /// /// Gets or sets the media streams. /// /// The media streams. public List MediaStreams { get; set; } /// /// 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 unknown album /// private static readonly MusicAlbum UnknownAlbum = new MusicAlbum {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 is MusicAlbum ? Parent : Album != null ? new MusicAlbum {Name = Album, PrimaryImagePath = PrimaryImagePath } : UnknownAlbum; } } /// /// Gets or sets the artist. /// /// The artist. public List Artists { get; set; } /// /// Gets or sets the album. /// /// The album. public string Album { get; set; } /// /// Gets or sets the album artist. /// /// The album artist. public string AlbumArtist { get; set; } /// /// Gets the type of the media. /// /// The type of the media. public override string MediaType { get { return Model.Entities.MediaType.Audio; } } /// /// Creates the name of the sort. /// /// System.String. protected override string CreateSortName() { return (ParentIndexNumber != null ? ParentIndexNumber.Value.ToString("0000 - ") : "") + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name; } /// /// Determines whether the specified name has artist. /// /// The name. /// true if the specified name has artist; otherwise, false. public bool HasArtist(string name) { return Artists.Contains(name, StringComparer.OrdinalIgnoreCase) || string.Equals(AlbumArtist, name, StringComparison.OrdinalIgnoreCase); } } }