|
@@ -69,11 +69,12 @@ namespace MediaBrowser.Providers.Manager
|
|
o.PoolInitialFill = 1;
|
|
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 _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,31 +880,35 @@ 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))
|
|
|
|
{
|
|
{
|
|
- 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/>
|
|
/// <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/>
|