jellyfin/MediaBrowser.Controller/Providers/ItemLookupInfo.cs

247 lines
7.0 KiB
C#
Raw Normal View History

using System.Linq;
using System.Threading;
using System.Threading.Tasks;
2014-09-22 21:56:54 +00:00
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Entities;
2014-01-29 05:17:58 +00:00
using System;
using System.Collections.Generic;
namespace MediaBrowser.Controller.Providers
{
2014-02-07 03:10:13 +00:00
public class ItemLookupInfo : IHasProviderIds
2014-01-29 05:17:58 +00:00
{
/// <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; }
2014-01-30 21:23:54 +00:00
/// <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; }
2014-01-29 05:17:58 +00:00
2014-02-07 03:10:13 +00:00
public ItemLookupInfo()
2014-01-29 05:17:58 +00:00
{
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
}
2014-01-31 19:55:21 +00:00
2014-02-07 03:10:13 +00:00
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
2014-01-31 19:55:21 +00:00
{
/// <summary>
/// Gets or sets the album artist.
/// </summary>
/// <value>The album artist.</value>
2014-06-23 16:05:19 +00:00
public List<string> AlbumArtists { get; set; }
2014-01-31 19:55:21 +00:00
/// <summary>
/// Gets or sets the artist provider ids.
2014-01-31 19:55:21 +00:00
/// </summary>
/// <value>The artist provider ids.</value>
public Dictionary<string, string> ArtistProviderIds { get; set; }
2014-02-07 03:10:13 +00:00
public List<SongInfo> SongInfos { get; set; }
2014-02-07 03:10:13 +00:00
public AlbumInfo()
{
ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
2014-02-07 03:10:13 +00:00
SongInfos = new List<SongInfo>();
2014-06-23 16:05:19 +00:00
AlbumArtists = new List<string>();
}
2014-01-31 19:55:21 +00:00
}
2014-02-02 13:36:31 +00:00
2014-02-07 03:10:13 +00:00
public class GameInfo : ItemLookupInfo
2014-02-02 13:36:31 +00:00
{
/// <summary>
/// Gets or sets the game system.
/// </summary>
/// <value>The game system.</value>
public string GameSystem { get; set; }
}
2014-02-07 03:10:13 +00:00
public class GameSystemInfo : ItemLookupInfo
2014-02-02 13:36:31 +00:00
{
/// <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; }
2014-02-28 04:49:02 +00:00
public int? AnimeSeriesIndex { get; set; }
2014-02-07 03:10:13 +00:00
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; }
}
2014-02-07 03:10:13 +00:00
public class SongInfo : ItemLookupInfo
{
2014-06-23 16:05:19 +00:00
public List<string> AlbumArtists { get; set; }
2014-02-07 03:10:13 +00:00
public string Album { get; set; }
public List<string> Artists { get; set; }
2014-06-23 16:05:19 +00:00
public SongInfo()
{
Artists = new List<string>();
AlbumArtists = new List<string>();
}
2014-02-07 03:10:13 +00:00
}
public class SeriesInfo : ItemLookupInfo, IHasIdentities<SeriesIdentity>
2014-02-07 03:10:13 +00:00
{
private List<SeriesIdentity> _identities = new List<SeriesIdentity>();
2014-02-28 04:49:02 +00:00
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; }
2014-02-07 03:10:13 +00:00
}
public class PersonLookupInfo : ItemLookupInfo
{
2015-02-21 07:32:49 +00:00
2014-02-07 03:10:13 +00:00
}
public class MovieInfo : ItemLookupInfo
{
}
public class BoxSetInfo : ItemLookupInfo
{
}
public class MusicVideoInfo : ItemLookupInfo
{
}
public class TrailerInfo : ItemLookupInfo
{
2014-02-15 16:36:09 +00:00
public bool IsLocalTrailer { get; set; }
2014-02-07 03:10:13 +00:00
}
public class BookInfo : ItemLookupInfo
{
2014-02-09 04:52:52 +00:00
public string SeriesName { get; set; }
2014-02-07 03:10:13 +00:00
}
2014-02-08 22:38:02 +00:00
public class SeasonInfo : ItemLookupInfo, IHasIdentities<SeasonIdentity>
2014-02-08 22:38:02 +00:00
{
private List<SeasonIdentity> _identities = new List<SeasonIdentity>();
public Dictionary<string, string> SeriesProviderIds { get; set; }
2014-02-28 04:49:02 +00:00
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; }
2014-02-08 22:38:02 +00:00
}
2014-09-22 21:56:54 +00:00
public class ChannelItemLookupInfo : ItemLookupInfo
{
public ChannelMediaContentType ContentType { get; set; }
2014-09-28 15:27:26 +00:00
public ExtraType ExtraType { get; set; }
2014-09-22 21:56:54 +00:00
}
2014-01-29 05:17:58 +00:00
}