aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/ProviderManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/ProviderManager.cs')
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs101
1 files changed, 46 insertions, 55 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index d1a5831f9..e2882ee06 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -326,6 +326,39 @@ namespace MediaBrowser.Providers.Manager
.ThenBy(GetDefaultOrder);
}
+ private bool CanRefreshImages(
+ IImageProvider provider,
+ BaseItem item,
+ TypeOptions? libraryTypeOptions,
+ ImageRefreshOptions refreshOptions,
+ bool includeDisabled)
+ {
+ try
+ {
+ if (!provider.Supports(item))
+ {
+ return false;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "{ProviderName} failed in Supports for type {ItemType} at {ItemPath}", provider.GetType().Name, item.GetType().Name, item.Path);
+ return false;
+ }
+
+ if (includeDisabled || provider is ILocalImageProvider)
+ {
+ return true;
+ }
+
+ if (item.IsLocked && refreshOptions.ImageRefreshMode != MetadataRefreshMode.FullRefresh)
+ {
+ return false;
+ }
+
+ return _baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, provider.Name);
+ }
+
/// <inheritdoc />
public IEnumerable<IMetadataProvider<T>> GetMetadataProviders<T>(BaseItem item, LibraryOptions libraryOptions)
where T : BaseItem
@@ -365,76 +398,34 @@ namespace MediaBrowser.Providers.Manager
bool includeDisabled,
bool forceEnableInternetMetadata)
{
- if (!includeDisabled)
- {
- // If locked only allow local providers
- if (item.IsLocked && provider is not ILocalMetadataProvider && provider is not IForcedProvider)
- {
- return false;
- }
-
- if (provider is IRemoteMetadataProvider)
- {
- if (!forceEnableInternetMetadata && !_baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, provider.Name))
- {
- return false;
- }
- }
- }
-
if (!item.SupportsLocalMetadata && provider is ILocalMetadataProvider)
{
return false;
}
- // If this restriction is ever lifted, movie xml providers will have to be updated to prevent owned items like trailers from reading those files
- if (!item.OwnerId.Equals(default))
+ // Prevent owned items from reading the same local metadata file as their owner
+ if (!item.OwnerId.Equals(default) && provider is ILocalMetadataProvider)
{
- if (provider is ILocalMetadataProvider || provider is IRemoteMetadataProvider)
- {
- return false;
- }
+ return false;
}
- return true;
- }
-
- private bool CanRefreshImages(
- IImageProvider provider,
- BaseItem item,
- TypeOptions? libraryTypeOptions,
- ImageRefreshOptions refreshOptions,
- bool includeDisabled)
- {
- if (!includeDisabled)
+ if (includeDisabled)
{
- // If locked only allow local providers
- if (item.IsLocked && provider is not ILocalImageProvider)
- {
- if (refreshOptions.ImageRefreshMode != MetadataRefreshMode.FullRefresh)
- {
- return false;
- }
- }
-
- if (provider is IRemoteImageProvider || provider is IDynamicImageProvider)
- {
- if (!_baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, provider.Name))
- {
- return false;
- }
- }
+ return true;
}
- try
+ // If locked only allow local providers
+ if (item.IsLocked && provider is not ILocalMetadataProvider && provider is not IForcedProvider)
{
- return provider.Supports(item);
+ return false;
}
- catch (Exception ex)
+
+ if (forceEnableInternetMetadata || provider is not IRemoteMetadataProvider)
{
- _logger.LogError(ex, "{ProviderName} failed in Supports for type {ItemType} at {ItemPath}", provider.GetType().Name, item.GetType().Name, item.Path);
- return false;
+ return true;
}
+
+ return _baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, provider.Name);
}
private static int GetConfiguredOrder(string[] order, string providerName)