using System.Runtime.Serialization; using MediaBrowser.Controller.Entities.Audio; using System; using System.Collections.Generic; using System.Linq; namespace MediaBrowser.Controller.Entities { /// /// Class Genre /// public class Genre : BaseItem, IItemByName { public override List GetUserDataKeys() { var list = base.GetUserDataKeys(); list.Insert(0, "Genre-" + Name); return list; } /// /// Returns the folder containing the item. /// If the item is a folder, it returns the folder itself /// /// The containing folder path. [IgnoreDataMember] public override string ContainingFolderPath { get { return Path; } } public override bool IsSaveLocalMetadataEnabled() { return true; } public override bool CanDelete() { return false; } /// /// Gets a value indicating whether this instance is owned item. /// /// true if this instance is owned item; otherwise, false. [IgnoreDataMember] public override bool IsOwnedItem { get { return false; } } public IEnumerable GetTaggedItems(IEnumerable inputItems) { return inputItems.Where(GetItemFilter()); } public Func GetItemFilter() { return i => !(i is Game) && !(i is IHasMusicGenres) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); } public IEnumerable GetTaggedItems(InternalItemsQuery query) { query.Genres = new[] { Name }; query.ExcludeItemTypes = new[] { typeof(Game).Name, typeof(MusicVideo).Name, typeof(Audio.Audio).Name, typeof(MusicAlbum).Name, typeof(MusicArtist).Name }; return LibraryManager.GetItemList(query); } [IgnoreDataMember] public override bool SupportsPeople { get { return false; } } } }