diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 36 |
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) { |
