| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 | using System.Linq;using System.Threading;using System.Threading.Tasks;using MediaBrowser.Model.Entities;using System;using System.Collections.Generic;namespace MediaBrowser.Controller.Providers{    public class ItemLookupInfo : IHasProviderIds    {        /// <summary>        /// Gets or sets the name.        /// </summary>        /// <value>The name.</value>        public string Name { get; set; }        /// <summary>        /// Gets or sets the metadata language.        /// </summary>        /// <value>The metadata language.</value>        public string MetadataLanguage { get; set; }        /// <summary>        /// Gets or sets the metadata country code.        /// </summary>        /// <value>The metadata country code.</value>        public string MetadataCountryCode { get; set; }        /// <summary>        /// Gets or sets the provider ids.        /// </summary>        /// <value>The provider ids.</value>        public Dictionary<string, string> ProviderIds { get; set; }        /// <summary>        /// Gets or sets the year.        /// </summary>        /// <value>The year.</value>        public int? Year { get; set; }        public int? IndexNumber { get; set; }        public int? ParentIndexNumber { get; set; }        public ItemLookupInfo()        {            ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);        }    }    public interface IHasLookupInfo<out TLookupInfoType>        where TLookupInfoType : ItemLookupInfo, new()    {        TLookupInfoType GetLookupInfo();    }    public class ArtistInfo : ItemLookupInfo    {        public List<SongInfo> SongInfos { get; set; }        public ArtistInfo()        {            SongInfos = new List<SongInfo>();        }    }    public class AlbumInfo : ItemLookupInfo    {        /// <summary>        /// Gets or sets the album artist.        /// </summary>        /// <value>The album artist.</value>        public List<string> AlbumArtists { get; set; }        /// <summary>        /// Gets or sets the artist provider ids.        /// </summary>        /// <value>The artist provider ids.</value>        public Dictionary<string, string> ArtistProviderIds { get; set; }        public List<SongInfo> SongInfos { get; set; }        public AlbumInfo()        {            ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);            SongInfos = new List<SongInfo>();            AlbumArtists = new List<string>();        }    }    public class GameInfo : ItemLookupInfo    {        /// <summary>        /// Gets or sets the game system.        /// </summary>        /// <value>The game system.</value>        public string GameSystem { get; set; }    }    public class GameSystemInfo : ItemLookupInfo    {        /// <summary>        /// Gets or sets the path.        /// </summary>        /// <value>The path.</value>        public string Path { get; set; }    }    public class EpisodeInfo : ItemLookupInfo, IHasIdentities<EpisodeIdentity>    {        private List<EpisodeIdentity> _identities = new List<EpisodeIdentity>();        public Dictionary<string, string> SeriesProviderIds { get; set; }        public int? IndexNumberEnd { get; set; }        public int? AnimeSeriesIndex { get; set; }        public EpisodeInfo()        {            SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);        }        public IEnumerable<EpisodeIdentity> Identities        {            get { return _identities; }        }        public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken)        {            var identifier = new ItemIdentifier<EpisodeInfo, EpisodeIdentity>();            _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList();        }    }    public class EpisodeIdentity : IItemIdentity    {        public string Type { get; set; }        public string SeriesId { get; set; }        public int? SeasonIndex { get; set; }        public int IndexNumber { get; set; }        public int? IndexNumberEnd { get; set; }    }    public class SongInfo : ItemLookupInfo    {        public List<string> AlbumArtists { get; set; }        public string Album { get; set; }        public List<string> Artists { get; set; }        public SongInfo()        {            Artists = new List<string>();            AlbumArtists = new List<string>();        }    }    public class SeriesInfo : ItemLookupInfo, IHasIdentities<SeriesIdentity>    {        private List<SeriesIdentity> _identities = new List<SeriesIdentity>();        public int? AnimeSeriesIndex { get; set; }        public IEnumerable<SeriesIdentity> Identities        {            get { return _identities; }        }        public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken)        {            var identifier = new ItemIdentifier<SeriesInfo, SeriesIdentity>();            _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList();        }    }    public class SeriesIdentity : IItemIdentity    {        public string Type { get; set; }        public string Id { get; set; }    }    public class PersonLookupInfo : ItemLookupInfo    {            }    public class MovieInfo : ItemLookupInfo    {    }    public class BoxSetInfo : ItemLookupInfo    {    }    public class MusicVideoInfo : ItemLookupInfo    {    }    public class TrailerInfo : ItemLookupInfo    {        public bool IsLocalTrailer { get; set; }    }    public class BookInfo : ItemLookupInfo    {        public string SeriesName { get; set; }    }    public class SeasonInfo : ItemLookupInfo, IHasIdentities<SeasonIdentity>    {        private List<SeasonIdentity> _identities = new List<SeasonIdentity>();        public Dictionary<string, string> SeriesProviderIds { get; set; }        public int? AnimeSeriesIndex { get; set; }        public SeasonInfo()        {            SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);        }        public IEnumerable<SeasonIdentity> Identities        {            get { return _identities; }        }        public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken)        {            var identifier = new ItemIdentifier<SeasonInfo, SeasonIdentity>();            _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList();        }    }    public class SeasonIdentity : IItemIdentity    {        public string Type { get; set; }        public string SeriesId { get; set; }        public int SeasonIndex { get; set; }    }}
 |