mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Move external url listing to provider for plugin use (#12279)
This commit is contained in:
parent
78ed8f660c
commit
b026772764
@ -664,7 +664,8 @@ namespace Emby.Server.Implementations
|
|||||||
GetExports<IMetadataService>(),
|
GetExports<IMetadataService>(),
|
||||||
GetExports<IMetadataProvider>(),
|
GetExports<IMetadataProvider>(),
|
||||||
GetExports<IMetadataSaver>(),
|
GetExports<IMetadataSaver>(),
|
||||||
GetExports<IExternalId>());
|
GetExports<IExternalId>(),
|
||||||
|
GetExports<IExternalUrlProvider>());
|
||||||
|
|
||||||
Resolve<IMediaSourceManager>().AddParts(GetExports<IMediaSourceProvider>());
|
Resolve<IMediaSourceManager>().AddParts(GetExports<IMediaSourceProvider>());
|
||||||
}
|
}
|
||||||
|
@ -2497,11 +2497,6 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return new[] { Id };
|
return new[] { Id };
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
return new List<ExternalUrl>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual double? GetRefreshProgress()
|
public virtual double? GetRefreshProgress()
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -121,23 +121,5 @@ namespace MediaBrowser.Controller.Entities.Movies
|
|||||||
|
|
||||||
return hasChanges;
|
return hasChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public override List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
var list = base.GetRelatedUrls();
|
|
||||||
|
|
||||||
var imdbId = this.GetProviderId(MetadataProvider.Imdb);
|
|
||||||
if (!string.IsNullOrEmpty(imdbId))
|
|
||||||
{
|
|
||||||
list.Add(new ExternalUrl
|
|
||||||
{
|
|
||||||
Name = "Trakt",
|
|
||||||
Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/movies/{0}", imdbId)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -344,22 +344,5 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||||||
|
|
||||||
return hasChanges;
|
return hasChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
var list = base.GetRelatedUrls();
|
|
||||||
|
|
||||||
var imdbId = this.GetProviderId(MetadataProvider.Imdb);
|
|
||||||
if (!string.IsNullOrEmpty(imdbId))
|
|
||||||
{
|
|
||||||
list.Add(new ExternalUrl
|
|
||||||
{
|
|
||||||
Name = "Trakt",
|
|
||||||
Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/episodes/{0}", imdbId)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -482,22 +482,5 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||||||
|
|
||||||
return hasChanges;
|
return hasChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
var list = base.GetRelatedUrls();
|
|
||||||
|
|
||||||
var imdbId = this.GetProviderId(MetadataProvider.Imdb);
|
|
||||||
if (!string.IsNullOrEmpty(imdbId))
|
|
||||||
{
|
|
||||||
list.Add(new ExternalUrl
|
|
||||||
{
|
|
||||||
Name = "Trakt",
|
|
||||||
Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/shows/{0}", imdbId)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,22 +80,5 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
return hasChanges;
|
return hasChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
var list = base.GetRelatedUrls();
|
|
||||||
|
|
||||||
var imdbId = this.GetProviderId(MetadataProvider.Imdb);
|
|
||||||
if (!string.IsNullOrEmpty(imdbId))
|
|
||||||
{
|
|
||||||
list.Add(new ExternalUrl
|
|
||||||
{
|
|
||||||
Name = "Trakt",
|
|
||||||
Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/movies/{0}", imdbId)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,25 +254,5 @@ namespace MediaBrowser.Controller.LiveTv
|
|||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<ExternalUrl> GetRelatedUrls()
|
|
||||||
{
|
|
||||||
var list = base.GetRelatedUrls();
|
|
||||||
|
|
||||||
var imdbId = this.GetProviderId(MetadataProvider.Imdb);
|
|
||||||
if (!string.IsNullOrEmpty(imdbId))
|
|
||||||
{
|
|
||||||
if (IsMovie)
|
|
||||||
{
|
|
||||||
list.Add(new ExternalUrl
|
|
||||||
{
|
|
||||||
Name = "Trakt",
|
|
||||||
Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/movies/{0}", imdbId)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the URL format string for this id.
|
/// Gets the URL format string for this id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete("Obsolete in 10.10, to be removed in 10.11")]
|
||||||
string? UrlFormatString { get; }
|
string? UrlFormatString { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
22
MediaBrowser.Controller/Providers/IExternalUrlProvider.cs
Normal file
22
MediaBrowser.Controller/Providers/IExternalUrlProvider.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller.Providers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interface to include related urls for an item.
|
||||||
|
/// </summary>
|
||||||
|
public interface IExternalUrlProvider
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the external service name.
|
||||||
|
/// </summary>
|
||||||
|
string Name { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the list of external urls.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">The item to get external urls for.</param>
|
||||||
|
/// <returns>The list of external urls.</returns>
|
||||||
|
IEnumerable<string> GetExternalUrls(BaseItem item);
|
||||||
|
}
|
@ -99,12 +99,14 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
/// <param name="metadataProviders">Metadata providers to use.</param>
|
/// <param name="metadataProviders">Metadata providers to use.</param>
|
||||||
/// <param name="metadataSavers">Metadata savers to use.</param>
|
/// <param name="metadataSavers">Metadata savers to use.</param>
|
||||||
/// <param name="externalIds">External IDs to use.</param>
|
/// <param name="externalIds">External IDs to use.</param>
|
||||||
|
/// <param name="externalUrlProviders">The list of external url providers.</param>
|
||||||
void AddParts(
|
void AddParts(
|
||||||
IEnumerable<IImageProvider> imageProviders,
|
IEnumerable<IImageProvider> imageProviders,
|
||||||
IEnumerable<IMetadataService> metadataServices,
|
IEnumerable<IMetadataService> metadataServices,
|
||||||
IEnumerable<IMetadataProvider> metadataProviders,
|
IEnumerable<IMetadataProvider> metadataProviders,
|
||||||
IEnumerable<IMetadataSaver> metadataSavers,
|
IEnumerable<IMetadataSaver> metadataSavers,
|
||||||
IEnumerable<IExternalId> externalIds);
|
IEnumerable<IExternalId> externalIds,
|
||||||
|
IEnumerable<IExternalUrlProvider> externalUrlProviders);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the available remote images.
|
/// Gets the available remote images.
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Providers
|
namespace MediaBrowser.Model.Providers
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -17,7 +19,9 @@ namespace MediaBrowser.Model.Providers
|
|||||||
Name = name;
|
Name = name;
|
||||||
Key = key;
|
Key = key;
|
||||||
Type = type;
|
Type = type;
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete - Remove 10.11
|
||||||
UrlFormatString = urlFormatString;
|
UrlFormatString = urlFormatString;
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -46,6 +50,7 @@ namespace MediaBrowser.Model.Providers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the URL format string.
|
/// Gets or sets the URL format string.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete("Obsolete in 10.10, to be removed in 10.11")]
|
||||||
public string? UrlFormatString { get; set; }
|
public string? UrlFormatString { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,11 +69,12 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
o.PoolInitialFill = 1;
|
o.PoolInitialFill = 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
private IImageProvider[] _imageProviders = Array.Empty<IImageProvider>();
|
private IImageProvider[] _imageProviders = [];
|
||||||
private IMetadataService[] _metadataServices = Array.Empty<IMetadataService>();
|
private IMetadataService[] _metadataServices = [];
|
||||||
private IMetadataProvider[] _metadataProviders = Array.Empty<IMetadataProvider>();
|
private IMetadataProvider[] _metadataProviders = [];
|
||||||
private IMetadataSaver[] _savers = Array.Empty<IMetadataSaver>();
|
private IMetadataSaver[] _savers = [];
|
||||||
private IExternalId[] _externalIds = Array.Empty<IExternalId>();
|
private IExternalId[] _externalIds = [];
|
||||||
|
private IExternalUrlProvider[] _externalUrlProviders = [];
|
||||||
private bool _isProcessingRefreshQueue;
|
private bool _isProcessingRefreshQueue;
|
||||||
private bool _disposed;
|
private bool _disposed;
|
||||||
|
|
||||||
@ -132,12 +133,14 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
IEnumerable<IMetadataService> metadataServices,
|
IEnumerable<IMetadataService> metadataServices,
|
||||||
IEnumerable<IMetadataProvider> metadataProviders,
|
IEnumerable<IMetadataProvider> metadataProviders,
|
||||||
IEnumerable<IMetadataSaver> metadataSavers,
|
IEnumerable<IMetadataSaver> metadataSavers,
|
||||||
IEnumerable<IExternalId> externalIds)
|
IEnumerable<IExternalId> externalIds,
|
||||||
|
IEnumerable<IExternalUrlProvider> externalUrlProviders)
|
||||||
{
|
{
|
||||||
_imageProviders = imageProviders.ToArray();
|
_imageProviders = imageProviders.ToArray();
|
||||||
_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.ProviderName).ToArray();
|
_externalIds = externalIds.OrderBy(i => i.ProviderName).ToArray();
|
||||||
|
_externalUrlProviders = externalUrlProviders.OrderBy(i => i.Name).ToArray();
|
||||||
|
|
||||||
_savers = metadataSavers.ToArray();
|
_savers = metadataSavers.ToArray();
|
||||||
}
|
}
|
||||||
@ -877,17 +880,13 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public IEnumerable<ExternalUrl> GetExternalUrls(BaseItem item)
|
public IEnumerable<ExternalUrl> GetExternalUrls(BaseItem item)
|
||||||
{
|
{
|
||||||
return GetExternalIds(item)
|
#pragma warning disable CS0618 // Type or member is obsolete - Remove 10.11
|
||||||
|
var legacyExternalIdUrls = GetExternalIds(item)
|
||||||
.Select(i =>
|
.Select(i =>
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(i.UrlFormatString))
|
var urlFormatString = i.UrlFormatString;
|
||||||
{
|
if (string.IsNullOrEmpty(urlFormatString)
|
||||||
return null;
|
|| !item.TryGetProviderId(i.Key, out var providerId))
|
||||||
}
|
|
||||||
|
|
||||||
var value = item.GetProviderId(i.Key);
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(value))
|
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -897,11 +896,19 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
Name = i.ProviderName,
|
Name = i.ProviderName,
|
||||||
Url = string.Format(
|
Url = string.Format(
|
||||||
CultureInfo.InvariantCulture,
|
CultureInfo.InvariantCulture,
|
||||||
i.UrlFormatString,
|
urlFormatString,
|
||||||
value)
|
providerId)
|
||||||
};
|
};
|
||||||
}).Where(i => i is not null)
|
})
|
||||||
.Concat(item.GetRelatedUrls())!; // We just filtered out all the nulls
|
.OfType<ExternalUrl>();
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
|
var externalUrls = _externalUrlProviders
|
||||||
|
.SelectMany(p => p
|
||||||
|
.GetExternalUrls(item)
|
||||||
|
.Select(externalUrl => new ExternalUrl { Name = p.Name, Url = externalUrl }));
|
||||||
|
|
||||||
|
return legacyExternalIdUrls.Concat(externalUrls).OrderBy(u => u.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
@ -912,7 +919,9 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
name: i.ProviderName,
|
name: i.ProviderName,
|
||||||
key: i.Key,
|
key: i.Key,
|
||||||
type: i.Type,
|
type: i.Type,
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete - Remove 10.11
|
||||||
urlFormatString: i.UrlFormatString));
|
urlFormatString: i.UrlFormatString));
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
@ -585,15 +585,17 @@ namespace Jellyfin.Providers.Tests.Manager
|
|||||||
IEnumerable<IMetadataService>? metadataServices = null,
|
IEnumerable<IMetadataService>? metadataServices = null,
|
||||||
IEnumerable<IMetadataProvider>? metadataProviders = null,
|
IEnumerable<IMetadataProvider>? metadataProviders = null,
|
||||||
IEnumerable<IMetadataSaver>? metadataSavers = null,
|
IEnumerable<IMetadataSaver>? metadataSavers = null,
|
||||||
IEnumerable<IExternalId>? externalIds = null)
|
IEnumerable<IExternalId>? externalIds = null,
|
||||||
|
IEnumerable<IExternalUrlProvider>? externalUrlProviders = null)
|
||||||
{
|
{
|
||||||
imageProviders ??= Array.Empty<IImageProvider>();
|
imageProviders ??= Array.Empty<IImageProvider>();
|
||||||
metadataServices ??= Array.Empty<IMetadataService>();
|
metadataServices ??= Array.Empty<IMetadataService>();
|
||||||
metadataProviders ??= Array.Empty<IMetadataProvider>();
|
metadataProviders ??= Array.Empty<IMetadataProvider>();
|
||||||
metadataSavers ??= Array.Empty<IMetadataSaver>();
|
metadataSavers ??= Array.Empty<IMetadataSaver>();
|
||||||
externalIds ??= Array.Empty<IExternalId>();
|
externalIds ??= Array.Empty<IExternalId>();
|
||||||
|
externalUrlProviders ??= Array.Empty<IExternalUrlProvider>();
|
||||||
|
|
||||||
providerManager.AddParts(imageProviders, metadataServices, metadataProviders, metadataSavers, externalIds);
|
providerManager.AddParts(imageProviders, metadataServices, metadataProviders, metadataSavers, externalIds, externalUrlProviders);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user