Move external url listing to provider for plugin use (#12279)

This commit is contained in:
Cody Robibero
2024-07-17 09:48:31 -04:00
committed by GitHub
parent 78ed8f660c
commit b026772764
13 changed files with 73 additions and 124 deletions

View File

@@ -69,11 +69,12 @@ namespace MediaBrowser.Providers.Manager
o.PoolInitialFill = 1;
});
private IImageProvider[] _imageProviders = Array.Empty<IImageProvider>();
private IMetadataService[] _metadataServices = Array.Empty<IMetadataService>();
private IMetadataProvider[] _metadataProviders = Array.Empty<IMetadataProvider>();
private IMetadataSaver[] _savers = Array.Empty<IMetadataSaver>();
private IExternalId[] _externalIds = Array.Empty<IExternalId>();
private IImageProvider[] _imageProviders = [];
private IMetadataService[] _metadataServices = [];
private IMetadataProvider[] _metadataProviders = [];
private IMetadataSaver[] _savers = [];
private IExternalId[] _externalIds = [];
private IExternalUrlProvider[] _externalUrlProviders = [];
private bool _isProcessingRefreshQueue;
private bool _disposed;
@@ -132,12 +133,14 @@ namespace MediaBrowser.Providers.Manager
IEnumerable<IMetadataService> metadataServices,
IEnumerable<IMetadataProvider> metadataProviders,
IEnumerable<IMetadataSaver> metadataSavers,
IEnumerable<IExternalId> externalIds)
IEnumerable<IExternalId> externalIds,
IEnumerable<IExternalUrlProvider> externalUrlProviders)
{
_imageProviders = imageProviders.ToArray();
_metadataServices = metadataServices.OrderBy(i => i.Order).ToArray();
_metadataProviders = metadataProviders.ToArray();
_externalIds = externalIds.OrderBy(i => i.ProviderName).ToArray();
_externalUrlProviders = externalUrlProviders.OrderBy(i => i.Name).ToArray();
_savers = metadataSavers.ToArray();
}
@@ -877,31 +880,35 @@ namespace MediaBrowser.Providers.Manager
/// <inheritdoc/>
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 =>
{
if (string.IsNullOrEmpty(i.UrlFormatString))
{
return null;
}
var urlFormatString = i.UrlFormatString;
if (string.IsNullOrEmpty(urlFormatString)
|| !item.TryGetProviderId(i.Key, out var providerId))
{
return null;
}
var value = item.GetProviderId(i.Key);
return new ExternalUrl
{
Name = i.ProviderName,
Url = string.Format(
CultureInfo.InvariantCulture,
urlFormatString,
providerId)
};
})
.OfType<ExternalUrl>();
#pragma warning restore CS0618 // Type or member is obsolete
if (string.IsNullOrEmpty(value))
{
return null;
}
var externalUrls = _externalUrlProviders
.SelectMany(p => p
.GetExternalUrls(item)
.Select(externalUrl => new ExternalUrl { Name = p.Name, Url = externalUrl }));
return new ExternalUrl
{
Name = i.ProviderName,
Url = string.Format(
CultureInfo.InvariantCulture,
i.UrlFormatString,
value)
};
}).Where(i => i is not null)
.Concat(item.GetRelatedUrls())!; // We just filtered out all the nulls
return legacyExternalIdUrls.Concat(externalUrls).OrderBy(u => u.Name);
}
/// <inheritdoc/>
@@ -912,7 +919,9 @@ namespace MediaBrowser.Providers.Manager
name: i.ProviderName,
key: i.Key,
type: i.Type,
#pragma warning disable CS0618 // Type or member is obsolete - Remove 10.11
urlFormatString: i.UrlFormatString));
#pragma warning restore CS0618 // Type or member is obsolete
}
/// <inheritdoc/>