Merge pull request #3137 from mark-monteiro/external-id-type

Correctly Support Translating External Ids
This commit is contained in:
Bond-009 2020-06-26 21:49:53 +02:00 committed by GitHub
commit 73da8df4bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 233 additions and 45 deletions

View File

@ -1,15 +1,45 @@
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Controller.Providers namespace MediaBrowser.Controller.Providers
{ {
/// <summary>
/// Represents an identifier for an external provider.
/// </summary>
public interface IExternalId public interface IExternalId
{ {
string Name { get; } /// <summary>
/// Gets the display name of the provider associated with this ID type.
/// </summary>
string ProviderName { get; }
/// <summary>
/// Gets the unique key to distinguish this provider/type pair. This should be unique across providers.
/// </summary>
// TODO: This property is not actually unique across the concrete types at the moment. It should be updated to be unique.
string Key { get; } string Key { get; }
/// <summary>
/// Gets the specific media type for this id. This is used to distinguish between the different
/// external id types for providers with multiple ids.
/// A null value indicates there is no specific media type associated with the external id, or this is the
/// default id for the external provider so there is no need to specify a type.
/// </summary>
/// <remarks>
/// This can be used along with the <see cref="ProviderName"/> to localize the external id on the client.
/// </remarks>
ExternalIdMediaType? Type { get; }
/// <summary>
/// Gets the URL format string for this id.
/// </summary>
string UrlFormatString { get; } string UrlFormatString { get; }
/// <summary>
/// Determines whether this id supports a given item type.
/// </summary>
/// <param name="item">The item.</param>
/// <returns>True if this item is supported, otherwise false.</returns>
bool Supports(IHasProviderIds item); bool Supports(IHasProviderIds item);
} }
} }

View File

@ -81,7 +81,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
var id = info.Key + "Id"; var id = info.Key + "Id";
if (!_validProviderIds.ContainsKey(id)) if (!_validProviderIds.ContainsKey(id))
{ {
_validProviderIds.Add(id, info.Key); _validProviderIds.Add(id, info.Key!);
} }
} }

View File

@ -1,26 +1,36 @@
#nullable disable
#pragma warning disable CS1591
namespace MediaBrowser.Model.Providers namespace MediaBrowser.Model.Providers
{ {
/// <summary>
/// Represents the external id information for serialization to the client.
/// </summary>
public class ExternalIdInfo public class ExternalIdInfo
{ {
/// <summary> /// <summary>
/// Gets or sets the name. /// Gets or sets the display name of the external id provider (IE: IMDB, MusicBrainz, etc).
/// </summary> /// </summary>
/// <value>The name.</value> // TODO: This should be renamed to ProviderName
public string Name { get; set; } public string? Name { get; set; }
/// <summary> /// <summary>
/// Gets or sets the key. /// Gets or sets the unique key for this id. This key should be unique across all providers.
/// </summary> /// </summary>
/// <value>The key.</value> // TODO: This property is not actually unique across the concrete types at the moment. It should be updated to be unique.
public string Key { get; set; } public string? Key { get; set; }
/// <summary>
/// Gets or sets the specific media type for this id. This is used to distinguish between the different
/// external id types for providers with multiple ids.
/// A null value indicates there is no specific media type associated with the external id, or this is the
/// default id for the external provider so there is no need to specify a type.
/// </summary>
/// <remarks>
/// This can be used along with the <see cref="Name"/> to localize the external id on the client.
/// </remarks>
public ExternalIdMediaType? Type { get; set; }
/// <summary> /// <summary>
/// Gets or sets the URL format string. /// Gets or sets the URL format string.
/// </summary> /// </summary>
/// <value>The URL format string.</value> public string? UrlFormatString { get; set; }
public string UrlFormatString { get; set; }
} }
} }

View File

@ -0,0 +1,71 @@
namespace MediaBrowser.Model.Providers
{
/// <summary>
/// The specific media type of an <see cref="ExternalIdInfo"/>.
/// </summary>
/// <remarks>
/// Client applications may use this as a translation key.
/// </remarks>
public enum ExternalIdMediaType
{
/// <summary>
/// A music album.
/// </summary>
Album = 1,
/// <summary>
/// The artist of a music album.
/// </summary>
AlbumArtist = 2,
/// <summary>
/// The artist of a media item.
/// </summary>
Artist = 3,
/// <summary>
/// A boxed set of media.
/// </summary>
BoxSet = 4,
/// <summary>
/// A series episode.
/// </summary>
Episode = 5,
/// <summary>
/// A movie.
/// </summary>
Movie = 6,
/// <summary>
/// An alternative artist apart from the main artist.
/// </summary>
OtherArtist = 7,
/// <summary>
/// A person.
/// </summary>
Person = 8,
/// <summary>
/// A release group.
/// </summary>
ReleaseGroup = 9,
/// <summary>
/// A single season of a series.
/// </summary>
Season = 10,
/// <summary>
/// A series.
/// </summary>
Series = 11,
/// <summary>
/// A music track.
/// </summary>
Track = 12
}
}

View File

@ -102,7 +102,7 @@ namespace MediaBrowser.Providers.Manager
_metadataServices = metadataServices.OrderBy(i => i.Order).ToArray(); _metadataServices = metadataServices.OrderBy(i => i.Order).ToArray();
_metadataProviders = metadataProviders.ToArray(); _metadataProviders = metadataProviders.ToArray();
_externalIds = externalIds.OrderBy(i => i.Name).ToArray(); _externalIds = externalIds.OrderBy(i => i.ProviderName).ToArray();
_savers = metadataSavers.Where(i => _savers = metadataSavers.Where(i =>
{ {
@ -900,7 +900,7 @@ namespace MediaBrowser.Providers.Manager
return new ExternalUrl return new ExternalUrl
{ {
Name = i.Name, Name = i.ProviderName,
Url = string.Format( Url = string.Format(
CultureInfo.InvariantCulture, CultureInfo.InvariantCulture,
i.UrlFormatString, i.UrlFormatString,
@ -914,8 +914,9 @@ namespace MediaBrowser.Providers.Manager
return GetExternalIds(item) return GetExternalIds(item)
.Select(i => new ExternalIdInfo .Select(i => new ExternalIdInfo
{ {
Name = i.Name, Name = i.ProviderName,
Key = i.Key, Key = i.Key,
Type = i.Type,
UrlFormatString = i.UrlFormatString UrlFormatString = i.UrlFormatString
}); });
} }

View File

@ -6,17 +6,21 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Movies namespace MediaBrowser.Providers.Movies
{ {
public class ImdbExternalId : IExternalId public class ImdbExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "IMDb"; public string ProviderName => "IMDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Imdb.ToString(); public string Key => MetadataProvider.Imdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => null;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.imdb.com/title/{0}"; public string UrlFormatString => "https://www.imdb.com/title/{0}";
@ -36,11 +40,14 @@ namespace MediaBrowser.Providers.Movies
public class ImdbPersonExternalId : IExternalId public class ImdbPersonExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "IMDb"; public string ProviderName => "IMDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Imdb.ToString(); public string Key => MetadataProvider.Imdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Person;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.imdb.com/name/{0}"; public string UrlFormatString => "https://www.imdb.com/name/{0}";

View File

@ -3,17 +3,21 @@
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Music namespace MediaBrowser.Providers.Music
{ {
public class ImvdbId : IExternalId public class ImvdbId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "IMVDb"; public string ProviderName => "IMVDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => "IMVDb"; public string Key => "IMVDb";
/// <inheritdoc />
public ExternalIdMediaType? Type => null;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => null; public string UrlFormatString => null;

View File

@ -3,17 +3,21 @@
using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Plugins.AudioDb namespace MediaBrowser.Providers.Plugins.AudioDb
{ {
public class AudioDbAlbumExternalId : IExternalId public class AudioDbAlbumExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheAudioDb"; public string ProviderName => "TheAudioDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.AudioDbAlbum.ToString(); public string Key => MetadataProvider.AudioDbAlbum.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => null;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/album/{0}"; public string UrlFormatString => "https://www.theaudiodb.com/album/{0}";
@ -24,11 +28,14 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public class AudioDbOtherAlbumExternalId : IExternalId public class AudioDbOtherAlbumExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheAudioDb Album"; public string ProviderName => "TheAudioDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.AudioDbAlbum.ToString(); public string Key => MetadataProvider.AudioDbAlbum.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Album;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/album/{0}"; public string UrlFormatString => "https://www.theaudiodb.com/album/{0}";
@ -39,11 +46,14 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public class AudioDbArtistExternalId : IExternalId public class AudioDbArtistExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheAudioDb"; public string ProviderName => "TheAudioDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.AudioDbArtist.ToString(); public string Key => MetadataProvider.AudioDbArtist.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Artist;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}"; public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}";
@ -54,11 +64,14 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public class AudioDbOtherArtistExternalId : IExternalId public class AudioDbOtherArtistExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheAudioDb Artist"; public string ProviderName => "TheAudioDb";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.AudioDbArtist.ToString(); public string Key => MetadataProvider.AudioDbArtist.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.OtherArtist;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}"; public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}";

View File

@ -3,6 +3,7 @@
using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
using MediaBrowser.Providers.Plugins.MusicBrainz; using MediaBrowser.Providers.Plugins.MusicBrainz;
namespace MediaBrowser.Providers.Music namespace MediaBrowser.Providers.Music
@ -10,11 +11,14 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzReleaseGroupExternalId : IExternalId public class MusicBrainzReleaseGroupExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz Release Group"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzReleaseGroup.ToString(); public string Key => MetadataProvider.MusicBrainzReleaseGroup.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.ReleaseGroup;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release-group/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release-group/{0}";
@ -25,11 +29,14 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzAlbumArtistExternalId : IExternalId public class MusicBrainzAlbumArtistExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz Album Artist"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzAlbumArtist.ToString(); public string Key => MetadataProvider.MusicBrainzAlbumArtist.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.AlbumArtist;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
@ -40,11 +47,14 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzAlbumExternalId : IExternalId public class MusicBrainzAlbumExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz Album"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzAlbum.ToString(); public string Key => MetadataProvider.MusicBrainzAlbum.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Album;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release/{0}";
@ -55,11 +65,14 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzArtistExternalId : IExternalId public class MusicBrainzArtistExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzArtist.ToString(); public string Key => MetadataProvider.MusicBrainzArtist.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Artist;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
@ -70,12 +83,15 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzOtherArtistExternalId : IExternalId public class MusicBrainzOtherArtistExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz Artist"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzArtist.ToString(); public string Key => MetadataProvider.MusicBrainzArtist.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.OtherArtist;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
@ -86,11 +102,14 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzTrackId : IExternalId public class MusicBrainzTrackId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "MusicBrainz Track"; public string ProviderName => "MusicBrainz";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.MusicBrainzTrack.ToString(); public string Key => MetadataProvider.MusicBrainzTrack.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Track;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/track/{0}"; public string UrlFormatString => Plugin.Instance.Configuration.Server + "/track/{0}";

View File

@ -1,20 +1,25 @@
#pragma warning disable CS1591
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
{ {
/// <summary>
/// External ID for a TMDB box set.
/// </summary>
public class TmdbBoxSetExternalId : IExternalId public class TmdbBoxSetExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => TmdbUtils.ProviderName; public string ProviderName => TmdbUtils.ProviderName;
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.TmdbCollection.ToString(); public string Key => MetadataProvider.TmdbCollection.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.BoxSet;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "collection/{0}"; public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "collection/{0}";

View File

@ -1,21 +1,26 @@
#pragma warning disable CS1591
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Plugins.Tmdb.Movies namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
{ {
/// <summary>
/// External ID for a TMBD movie.
/// </summary>
public class TmdbMovieExternalId : IExternalId public class TmdbMovieExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => TmdbUtils.ProviderName; public string ProviderName => TmdbUtils.ProviderName;
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tmdb.ToString(); public string Key => MetadataProvider.Tmdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Movie;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "movie/{0}"; public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "movie/{0}";

View File

@ -1,19 +1,24 @@
#pragma warning disable CS1591
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Plugins.Tmdb.People namespace MediaBrowser.Providers.Plugins.Tmdb.People
{ {
/// <summary>
/// External ID for a TMDB person.
/// </summary>
public class TmdbPersonExternalId : IExternalId public class TmdbPersonExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => TmdbUtils.ProviderName; public string ProviderName => TmdbUtils.ProviderName;
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tmdb.ToString(); public string Key => MetadataProvider.Tmdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Person;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "person/{0}"; public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "person/{0}";

View File

@ -1,19 +1,24 @@
#pragma warning disable CS1591
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Plugins.Tmdb.TV namespace MediaBrowser.Providers.Plugins.Tmdb.TV
{ {
/// <summary>
/// External ID for a TMDB series.
/// </summary>
public class TmdbSeriesExternalId : IExternalId public class TmdbSeriesExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => TmdbUtils.ProviderName; public string ProviderName => TmdbUtils.ProviderName;
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tmdb.ToString(); public string Key => MetadataProvider.Tmdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Series;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "tv/{0}"; public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "tv/{0}";

View File

@ -3,6 +3,7 @@
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
using MediaBrowser.Providers.Plugins.TheTvdb; using MediaBrowser.Providers.Plugins.TheTvdb;
namespace MediaBrowser.Providers.TV namespace MediaBrowser.Providers.TV
@ -10,11 +11,14 @@ namespace MediaBrowser.Providers.TV
public class Zap2ItExternalId : IExternalId public class Zap2ItExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "Zap2It"; public string ProviderName => "Zap2It";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Zap2It.ToString(); public string Key => MetadataProvider.Zap2It.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => null;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => "http://tvlistings.zap2it.com/overview.html?programSeriesId={0}"; public string UrlFormatString => "http://tvlistings.zap2it.com/overview.html?programSeriesId={0}";
@ -25,11 +29,14 @@ namespace MediaBrowser.Providers.TV
public class TvdbExternalId : IExternalId public class TvdbExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheTVDB"; public string ProviderName => "TheTVDB";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tvdb.ToString(); public string Key => MetadataProvider.Tvdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => null;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=series&id={0}"; public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=series&id={0}";
@ -40,11 +47,14 @@ namespace MediaBrowser.Providers.TV
public class TvdbSeasonExternalId : IExternalId public class TvdbSeasonExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheTVDB"; public string ProviderName => "TheTVDB";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tvdb.ToString(); public string Key => MetadataProvider.Tvdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Season;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => null; public string UrlFormatString => null;
@ -55,11 +65,14 @@ namespace MediaBrowser.Providers.TV
public class TvdbEpisodeExternalId : IExternalId public class TvdbEpisodeExternalId : IExternalId
{ {
/// <inheritdoc /> /// <inheritdoc />
public string Name => "TheTVDB"; public string ProviderName => "TheTVDB";
/// <inheritdoc /> /// <inheritdoc />
public string Key => MetadataProvider.Tvdb.ToString(); public string Key => MetadataProvider.Tvdb.ToString();
/// <inheritdoc />
public ExternalIdMediaType? Type => ExternalIdMediaType.Episode;
/// <inheritdoc /> /// <inheritdoc />
public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=episode&id={0}"; public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=episode&id={0}";