Merge pull request #13175 from Shadowghost/external-url-providers
Migrate to IExternalUrlProviderpull/13718/head
commit
79437f85c5
@ -0,0 +1,25 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Movies;
|
||||
|
||||
/// <summary>
|
||||
/// External URLs for IMDb.
|
||||
/// </summary>
|
||||
public class ImdbExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "IMDb";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
var baseUrl = "https://www.imdb.com/";
|
||||
if (item.TryGetProviderId(MetadataProvider.Imdb, out var externalId))
|
||||
{
|
||||
yield return baseUrl + $"title/{externalId}";
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.AudioDb;
|
||||
|
||||
/// <summary>
|
||||
/// External artist URLs for AudioDb.
|
||||
/// </summary>
|
||||
public class AudioDbAlbumExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "TheAudioDb Album";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.AudioDbAlbum, out var externalId))
|
||||
{
|
||||
var baseUrl = "https://www.theaudiodb.com/";
|
||||
switch (item)
|
||||
{
|
||||
case MusicAlbum:
|
||||
yield return baseUrl + $"album/{externalId}";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.AudioDb;
|
||||
|
||||
/// <summary>
|
||||
/// External artist URLs for AudioDb.
|
||||
/// </summary>
|
||||
public class AudioDbArtistExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "TheAudioDb Artist";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.AudioDbArtist, out var externalId))
|
||||
{
|
||||
var baseUrl = "https://www.theaudiodb.com/";
|
||||
switch (item)
|
||||
{
|
||||
case MusicAlbum:
|
||||
case Person:
|
||||
yield return baseUrl + $"artist/{externalId}";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.MusicBrainz;
|
||||
|
||||
/// <summary>
|
||||
/// External album artist URLs for MusicBrainz.
|
||||
/// </summary>
|
||||
public class MusicBrainzAlbumArtistExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "MusicBrainz Album Artist";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item is MusicAlbum)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.MusicBrainzAlbumArtist, out var externalId))
|
||||
{
|
||||
yield return Plugin.Instance!.Configuration.Server + $"/artist/{externalId}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.MusicBrainz;
|
||||
|
||||
/// <summary>
|
||||
/// External album URLs for MusicBrainz.
|
||||
/// </summary>
|
||||
public class MusicBrainzAlbumExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "MusicBrainz Album";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item is MusicAlbum)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.MusicBrainzAlbum, out var externalId))
|
||||
{
|
||||
yield return Plugin.Instance!.Configuration.Server + $"/release/{externalId}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.MusicBrainz;
|
||||
|
||||
/// <summary>
|
||||
/// External artist URLs for MusicBrainz.
|
||||
/// </summary>
|
||||
public class MusicBrainzArtistExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "MusicBrainz Artist";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.MusicBrainzArtist, out var externalId))
|
||||
{
|
||||
switch (item)
|
||||
{
|
||||
case MusicAlbum:
|
||||
case Person:
|
||||
yield return Plugin.Instance!.Configuration.Server + $"/artist/{externalId}";
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.MusicBrainz;
|
||||
|
||||
/// <summary>
|
||||
/// External release group URLs for MusicBrainz.
|
||||
/// </summary>
|
||||
public class MusicBrainzReleaseGroupExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "MusicBrainz Release Group";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item is MusicAlbum)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.MusicBrainzReleaseGroup, out var externalId))
|
||||
{
|
||||
yield return Plugin.Instance!.Configuration.Server + $"/release-group/{externalId}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.MusicBrainz;
|
||||
|
||||
/// <summary>
|
||||
/// External track URLs for MusicBrainz.
|
||||
/// </summary>
|
||||
public class MusicBrainzTrackExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "MusicBrainz Track";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item is Audio)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.MusicBrainzTrack, out var externalId))
|
||||
{
|
||||
yield return Plugin.Instance!.Configuration.Server + $"/track/{externalId}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using TMDbLib.Objects.TvShows;
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.Tmdb;
|
||||
|
||||
/// <summary>
|
||||
/// External URLs for TMDb.
|
||||
/// </summary>
|
||||
public class TmdbExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "TMDB";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
switch (item)
|
||||
{
|
||||
case Series:
|
||||
if (item.TryGetProviderId(MetadataProvider.Tmdb, out var externalId))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"tv/{externalId}";
|
||||
}
|
||||
|
||||
break;
|
||||
case Season season:
|
||||
if (season.Series.TryGetProviderId(MetadataProvider.Tmdb, out var seriesExternalId))
|
||||
{
|
||||
var orderString = season.Series.DisplayOrder;
|
||||
if (string.IsNullOrEmpty(orderString))
|
||||
{
|
||||
// Default order is airdate
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{season.IndexNumber}";
|
||||
}
|
||||
|
||||
if (Enum.TryParse<TvGroupType>(season.Series.DisplayOrder, out var order))
|
||||
{
|
||||
if (order.Equals(TvGroupType.OriginalAirDate))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{season.IndexNumber}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case Episode episode:
|
||||
if (episode.Series.TryGetProviderId(MetadataProvider.Imdb, out seriesExternalId))
|
||||
{
|
||||
var orderString = episode.Series.DisplayOrder;
|
||||
if (string.IsNullOrEmpty(orderString))
|
||||
{
|
||||
// Default order is airdate
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{episode.Season.IndexNumber}/episode/{episode.IndexNumber}";
|
||||
}
|
||||
|
||||
if (Enum.TryParse<TvGroupType>(orderString, out var order))
|
||||
{
|
||||
if (order.Equals(TvGroupType.OriginalAirDate))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"tv/{seriesExternalId}/season/{episode.Season.IndexNumber}/episode/{episode.IndexNumber}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case Movie:
|
||||
if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"movie/{externalId}";
|
||||
}
|
||||
|
||||
break;
|
||||
case Person:
|
||||
if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"person/{externalId}";
|
||||
}
|
||||
|
||||
break;
|
||||
case BoxSet:
|
||||
if (item.TryGetProviderId(MetadataProvider.Tmdb, out externalId))
|
||||
{
|
||||
yield return TmdbUtils.BaseTmdbUrl + $"collection/{externalId}";
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Providers.TV;
|
||||
|
||||
/// <summary>
|
||||
/// External URLs for TMDb.
|
||||
/// </summary>
|
||||
public class Zap2ItExternalUrlProvider : IExternalUrlProvider
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public string Name => "Zap2It";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<string> GetExternalUrls(BaseItem item)
|
||||
{
|
||||
if (item.TryGetProviderId(MetadataProvider.Zap2It, out var externalId))
|
||||
{
|
||||
yield return $"http://tvlistings.zap2it.com/overview.html?programSeriesId={externalId}";
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue