aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Providers/ExternalIdMediaType.cs45
-rw-r--r--MediaBrowser.Controller/Providers/IExternalId.cs10
-rw-r--r--MediaBrowser.Model/Providers/ExternalIdInfo.cs19
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs1
-rw-r--r--MediaBrowser.Providers/Movies/MovieExternalIds.cs6
-rw-r--r--MediaBrowser.Providers/Music/MusicExternalIds.cs3
-rw-r--r--MediaBrowser.Providers/Plugins/AudioDb/ExternalIds.cs16
-rw-r--r--MediaBrowser.Providers/Plugins/MusicBrainz/ExternalIds.cs28
-rw-r--r--MediaBrowser.Providers/TV/TvExternalIds.cs12
-rw-r--r--MediaBrowser.Providers/Tmdb/BoxSets/TmdbBoxSetExternalId.cs3
-rw-r--r--MediaBrowser.Providers/Tmdb/Movies/TmdbMovieExternalId.cs3
-rw-r--r--MediaBrowser.Providers/Tmdb/People/TmdbPersonExternalId.cs3
-rw-r--r--MediaBrowser.Providers/Tmdb/TV/TmdbSeriesExternalId.cs3
13 files changed, 138 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Providers/ExternalIdMediaType.cs b/MediaBrowser.Controller/Providers/ExternalIdMediaType.cs
new file mode 100644
index 000000000..470f1e24c
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/ExternalIdMediaType.cs
@@ -0,0 +1,45 @@
+namespace MediaBrowser.Controller.Providers
+{
+ /// <summary>The specific media type of an <see cref="IExternalId"/>.</summary>
+ public enum ExternalIdMediaType
+ {
+ /// <summary>There is no specific media type</summary>
+ None,
+
+ /// <summary>A music album</summary>
+ Album,
+
+ /// <summary>The artist of a music album</summary>
+ AlbumArtist,
+
+ /// <summary>The artist of a media item</summary>
+ Artist,
+
+ /// <summary>A boxed set of media</summary>
+ BoxSet,
+
+ /// <summary>A series episode</summary>
+ Episode,
+
+ /// <summary>A movie</summary>
+ Movie,
+
+ /// <summary>An alternative artist apart from the main artist</summary>
+ OtherArtist,
+
+ /// <summary>A person</summary>
+ Person,
+
+ /// <summary>A release group</summary>
+ ReleaseGroup,
+
+ /// <summary>A single season of a series</summary>
+ Season,
+
+ /// <summary>A series</summary>
+ Series,
+
+ /// <summary>A music track</summary>
+ Track
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/IExternalId.cs b/MediaBrowser.Controller/Providers/IExternalId.cs
index d7e337bda..c877ffe1f 100644
--- a/MediaBrowser.Controller/Providers/IExternalId.cs
+++ b/MediaBrowser.Controller/Providers/IExternalId.cs
@@ -2,14 +2,24 @@ using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Providers
{
+ /// <summary>Represents and identifier for an external provider.</summary>
public interface IExternalId
{
+ /// <summary>Gets the name used to identify this provider</summary>
string Name { get; }
+ /// <summary>Gets the unique key to distinguish this provider/type pair. This should be unique across providers.</summary>
string Key { get; }
+ /// <summary>Gets the specific media type for this id.</summary>
+ ExternalIdMediaType Type { get; }
+
+ /// <summary>Gets the url format string for this id.</summary>
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);
}
}
diff --git a/MediaBrowser.Model/Providers/ExternalIdInfo.cs b/MediaBrowser.Model/Providers/ExternalIdInfo.cs
index 2b481ad7e..befcc309b 100644
--- a/MediaBrowser.Model/Providers/ExternalIdInfo.cs
+++ b/MediaBrowser.Model/Providers/ExternalIdInfo.cs
@@ -1,25 +1,30 @@
-#pragma warning disable CS1591
-
namespace MediaBrowser.Model.Providers
{
+ /// <summary>
+ /// Represents the external id information for serialization to the client.
+ /// </summary>
public class ExternalIdInfo
{
/// <summary>
- /// Gets or sets the name.
+ /// Gets or sets the name of the external id provider (IE: IMDB, MusicBrainz, etc).
/// </summary>
- /// <value>The name.</value>
public string Name { get; set; }
/// <summary>
- /// Gets or sets the key.
+ /// Gets or sets the unique key for this id. This key should be unique across all providers.
/// </summary>
- /// <value>The key.</value>
public string Key { get; set; }
/// <summary>
+ /// Gets or sets the media type (Album, Artist, etc).
+ /// This can be null if there is no specific type.
+ /// This string is also used to localize the media type on the client.
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
/// Gets or sets the URL format string.
/// </summary>
- /// <value>The URL format string.</value>
public string UrlFormatString { get; set; }
}
}
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index cfff89767..b0380ae31 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -908,6 +908,7 @@ namespace MediaBrowser.Providers.Manager
{
Name = i.Name,
Key = i.Key,
+ Type = i.Type == ExternalIdMediaType.None ? null : i.Type.ToString(),
UrlFormatString = i.UrlFormatString
});
}
diff --git a/MediaBrowser.Providers/Movies/MovieExternalIds.cs b/MediaBrowser.Providers/Movies/MovieExternalIds.cs
index 55810b1ed..a7b359a2d 100644
--- a/MediaBrowser.Providers/Movies/MovieExternalIds.cs
+++ b/MediaBrowser.Providers/Movies/MovieExternalIds.cs
@@ -16,6 +16,9 @@ namespace MediaBrowser.Providers.Movies
public string Key => MetadataProviders.Imdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.None;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.imdb.com/title/{0}";
/// <inheritdoc />
@@ -40,6 +43,9 @@ namespace MediaBrowser.Providers.Movies
public string Key => MetadataProviders.Imdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Person;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.imdb.com/name/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Music/MusicExternalIds.cs b/MediaBrowser.Providers/Music/MusicExternalIds.cs
index 628b9a9a1..19879411e 100644
--- a/MediaBrowser.Providers/Music/MusicExternalIds.cs
+++ b/MediaBrowser.Providers/Music/MusicExternalIds.cs
@@ -13,6 +13,9 @@ namespace MediaBrowser.Providers.Music
public string Key => "IMVDb";
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.None;
+
+ /// <inheritdoc />
public string UrlFormatString => null;
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Plugins/AudioDb/ExternalIds.cs b/MediaBrowser.Providers/Plugins/AudioDb/ExternalIds.cs
index 2d8cb431c..cd65acb76 100644
--- a/MediaBrowser.Providers/Plugins/AudioDb/ExternalIds.cs
+++ b/MediaBrowser.Providers/Plugins/AudioDb/ExternalIds.cs
@@ -13,6 +13,9 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public string Key => MetadataProviders.AudioDbAlbum.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.None;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/album/{0}";
/// <inheritdoc />
@@ -22,12 +25,15 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public class AudioDbOtherAlbumExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "TheAudioDb Album";
+ public string Name => "TheAudioDb";
/// <inheritdoc />
public string Key => MetadataProviders.AudioDbAlbum.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Album;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/album/{0}";
/// <inheritdoc />
@@ -43,6 +49,9 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public string Key => MetadataProviders.AudioDbArtist.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Artist;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}";
/// <inheritdoc />
@@ -52,12 +61,15 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
public class AudioDbOtherArtistExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "TheAudioDb Artist";
+ public string Name => "TheAudioDb";
/// <inheritdoc />
public string Key => MetadataProviders.AudioDbArtist.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.OtherArtist;
+
+ /// <inheritdoc />
public string UrlFormatString => "https://www.theaudiodb.com/artist/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/ExternalIds.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/ExternalIds.cs
index 03565a34c..7d74a8d35 100644
--- a/MediaBrowser.Providers/Plugins/MusicBrainz/ExternalIds.cs
+++ b/MediaBrowser.Providers/Plugins/MusicBrainz/ExternalIds.cs
@@ -8,12 +8,15 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzReleaseGroupExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "MusicBrainz Release Group";
+ public string Name => "MusicBrainz";
/// <inheritdoc />
public string Key => MetadataProviders.MusicBrainzReleaseGroup.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.ReleaseGroup;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release-group/{0}";
/// <inheritdoc />
@@ -23,12 +26,15 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzAlbumArtistExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "MusicBrainz Album Artist";
+ public string Name => "MusicBrainz";
/// <inheritdoc />
public string Key => MetadataProviders.MusicBrainzAlbumArtist.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.AlbumArtist;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
/// <inheritdoc />
@@ -38,12 +44,15 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzAlbumExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "MusicBrainz Album";
+ public string Name => "MusicBrainz";
/// <inheritdoc />
public string Key => MetadataProviders.MusicBrainzAlbum.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Album;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/release/{0}";
/// <inheritdoc />
@@ -59,6 +68,9 @@ namespace MediaBrowser.Providers.Music
public string Key => MetadataProviders.MusicBrainzArtist.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Artist;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
/// <inheritdoc />
@@ -68,13 +80,16 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzOtherArtistExternalId : IExternalId
{
/// <inheritdoc />
- public string Name => "MusicBrainz Artist";
+ public string Name => "MusicBrainz";
/// <inheritdoc />
public string Key => MetadataProviders.MusicBrainzArtist.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.OtherArtist;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/artist/{0}";
/// <inheritdoc />
@@ -84,12 +99,15 @@ namespace MediaBrowser.Providers.Music
public class MusicBrainzTrackId : IExternalId
{
/// <inheritdoc />
- public string Name => "MusicBrainz Track";
+ public string Name => "MusicBrainz";
/// <inheritdoc />
public string Key => MetadataProviders.MusicBrainzTrack.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Track;
+
+ /// <inheritdoc />
public string UrlFormatString => Plugin.Instance.Configuration.Server + "/track/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/TV/TvExternalIds.cs b/MediaBrowser.Providers/TV/TvExternalIds.cs
index baf854285..75d8b6bf5 100644
--- a/MediaBrowser.Providers/TV/TvExternalIds.cs
+++ b/MediaBrowser.Providers/TV/TvExternalIds.cs
@@ -14,6 +14,9 @@ namespace MediaBrowser.Providers.TV
public string Key => MetadataProviders.Zap2It.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.None;
+
+ /// <inheritdoc />
public string UrlFormatString => "http://tvlistings.zap2it.com/overview.html?programSeriesId={0}";
/// <inheritdoc />
@@ -29,6 +32,9 @@ namespace MediaBrowser.Providers.TV
public string Key => MetadataProviders.Tvdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.None;
+
+ /// <inheritdoc />
public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=series&id={0}";
/// <inheritdoc />
@@ -45,6 +51,9 @@ namespace MediaBrowser.Providers.TV
public string Key => MetadataProviders.Tvdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Season;
+
+ /// <inheritdoc />
public string UrlFormatString => null;
/// <inheritdoc />
@@ -60,6 +69,9 @@ namespace MediaBrowser.Providers.TV
public string Key => MetadataProviders.Tvdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Episode;
+
+ /// <inheritdoc />
public string UrlFormatString => TvdbUtils.TvdbBaseUrl + "?tab=episode&id={0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Tmdb/BoxSets/TmdbBoxSetExternalId.cs b/MediaBrowser.Providers/Tmdb/BoxSets/TmdbBoxSetExternalId.cs
index 187295e1e..a83cde93c 100644
--- a/MediaBrowser.Providers/Tmdb/BoxSets/TmdbBoxSetExternalId.cs
+++ b/MediaBrowser.Providers/Tmdb/BoxSets/TmdbBoxSetExternalId.cs
@@ -14,6 +14,9 @@ namespace MediaBrowser.Providers.Tmdb.BoxSets
public string Key => MetadataProviders.TmdbCollection.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.BoxSet;
+
+ /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "collection/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Tmdb/Movies/TmdbMovieExternalId.cs b/MediaBrowser.Providers/Tmdb/Movies/TmdbMovieExternalId.cs
index fc7a4583f..f9ea00067 100644
--- a/MediaBrowser.Providers/Tmdb/Movies/TmdbMovieExternalId.cs
+++ b/MediaBrowser.Providers/Tmdb/Movies/TmdbMovieExternalId.cs
@@ -15,6 +15,9 @@ namespace MediaBrowser.Providers.Tmdb.Movies
public string Key => MetadataProviders.Tmdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Movie;
+
+ /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "movie/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Tmdb/People/TmdbPersonExternalId.cs b/MediaBrowser.Providers/Tmdb/People/TmdbPersonExternalId.cs
index 2c61bc70a..854fd4156 100644
--- a/MediaBrowser.Providers/Tmdb/People/TmdbPersonExternalId.cs
+++ b/MediaBrowser.Providers/Tmdb/People/TmdbPersonExternalId.cs
@@ -13,6 +13,9 @@ namespace MediaBrowser.Providers.Tmdb.People
public string Key => MetadataProviders.Tmdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Person;
+
+ /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "person/{0}";
/// <inheritdoc />
diff --git a/MediaBrowser.Providers/Tmdb/TV/TmdbSeriesExternalId.cs b/MediaBrowser.Providers/Tmdb/TV/TmdbSeriesExternalId.cs
index 524a3b05e..770448c7f 100644
--- a/MediaBrowser.Providers/Tmdb/TV/TmdbSeriesExternalId.cs
+++ b/MediaBrowser.Providers/Tmdb/TV/TmdbSeriesExternalId.cs
@@ -13,6 +13,9 @@ namespace MediaBrowser.Providers.Tmdb.TV
public string Key => MetadataProviders.Tmdb.ToString();
/// <inheritdoc />
+ public ExternalIdMediaType Type => ExternalIdMediaType.Series;
+
+ /// <inheritdoc />
public string UrlFormatString => TmdbUtils.BaseTmdbUrl + "tv/{0}";
/// <inheritdoc />