aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/MetadataService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs36
1 files changed, 14 insertions, 22 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 9f8dca434..9c6d6a482 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -78,16 +78,15 @@ namespace MediaBrowser.Providers.Manager
bool hasRefreshedMetadata = true;
bool hasRefreshedImages = true;
+ var isFirstRefresh = item.DateLastRefreshed == default(DateTime);
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
- var providers = GetProviders(item, refreshOptions, requiresRefresh)
+ var providers = GetProviders(item, refreshOptions, isFirstRefresh, requiresRefresh)
.ToList();
- var dateLastRefresh = item.DateLastRefreshed;
-
- if (providers.Count > 0 || dateLastRefresh == default(DateTime))
+ if (providers.Count > 0 || isFirstRefresh)
{
if (item.BeforeMetadataRefresh())
{
@@ -110,11 +109,7 @@ namespace MediaBrowser.Providers.Manager
var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
- if (result.Failures == 0)
- {
- hasRefreshedMetadata = true;
- }
- else
+ if (result.Failures > 0)
{
hasRefreshedMetadata = false;
}
@@ -138,19 +133,13 @@ namespace MediaBrowser.Providers.Manager
var result = await itemImageProvider.RefreshImages(itemOfType, libraryOptions, providers, refreshOptions, config, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
- if (result.Failures == 0)
- {
- hasRefreshedImages = true;
- }
- else
+ if (result.Failures > 0)
{
hasRefreshedImages = false;
}
}
}
- var isFirstRefresh = item.DateLastRefreshed == default(DateTime);
-
var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh, updateType).ConfigureAwait(false);
updateType = updateType | beforeSaveResult;
@@ -373,15 +362,18 @@ namespace MediaBrowser.Providers.Manager
/// Gets the providers.
/// </summary>
/// <returns>IEnumerable{`0}.</returns>
- protected IEnumerable<IMetadataProvider> GetProviders(IHasMetadata item, MetadataRefreshOptions options, bool requiresRefresh)
+ protected IEnumerable<IMetadataProvider> GetProviders(IHasMetadata item, MetadataRefreshOptions options, bool isFirstRefresh, bool requiresRefresh)
{
// Get providers to refresh
var providers = ((ProviderManager)ProviderManager).GetMetadataProviders<TItemType>(item).ToList();
- var dateLastRefresh = item.DateLastRefreshed;
+ var metadataRefreshMode = options.MetadataRefreshMode;
// Run all if either of these flags are true
- var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || dateLastRefresh == default(DateTime) || requiresRefresh;
+ var runAllProviders = options.ReplaceAllMetadata ||
+ metadataRefreshMode == MetadataRefreshMode.FullRefresh ||
+ (isFirstRefresh && metadataRefreshMode >= MetadataRefreshMode.Default) ||
+ (requiresRefresh && metadataRefreshMode >= MetadataRefreshMode.Default);
if (!runAllProviders)
{
@@ -404,6 +396,9 @@ namespace MediaBrowser.Providers.Manager
}
else
{
+ var anyRemoteProvidersChanged = providersWithChanges.OfType<IRemoteMetadataProvider>()
+ .Any();
+
providers = providers.Where(i =>
{
// If any provider reports a change, always run local ones as well
@@ -412,9 +407,6 @@ namespace MediaBrowser.Providers.Manager
return true;
}
- var anyRemoteProvidersChanged = providersWithChanges.OfType<IRemoteMetadataProvider>()
- .Any();
-
// If any remote providers changed, run them all so that priorities can be honored
if (i is IRemoteMetadataProvider)
{