|
@@ -78,16 +78,15 @@ namespace MediaBrowser.Providers.Manager
|
|
|
|
|
|
bool hasRefreshedMetadata = true;
|
|
bool hasRefreshedMetadata = true;
|
|
bool hasRefreshedImages = true;
|
|
bool hasRefreshedImages = true;
|
|
|
|
+ var isFirstRefresh = item.DateLastRefreshed == default(DateTime);
|
|
|
|
|
|
// Next run metadata providers
|
|
// Next run metadata providers
|
|
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
|
|
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
|
|
{
|
|
{
|
|
- var providers = GetProviders(item, refreshOptions, requiresRefresh)
|
|
|
|
|
|
+ var providers = GetProviders(item, refreshOptions, isFirstRefresh, requiresRefresh)
|
|
.ToList();
|
|
.ToList();
|
|
|
|
|
|
- var dateLastRefresh = item.DateLastRefreshed;
|
|
|
|
-
|
|
|
|
- if (providers.Count > 0 || dateLastRefresh == default(DateTime))
|
|
|
|
|
|
+ if (providers.Count > 0 || isFirstRefresh)
|
|
{
|
|
{
|
|
if (item.BeforeMetadataRefresh())
|
|
if (item.BeforeMetadataRefresh())
|
|
{
|
|
{
|
|
@@ -110,11 +109,7 @@ namespace MediaBrowser.Providers.Manager
|
|
var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
|
|
var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
|
updateType = updateType | result.UpdateType;
|
|
updateType = updateType | result.UpdateType;
|
|
- if (result.Failures == 0)
|
|
|
|
- {
|
|
|
|
- hasRefreshedMetadata = true;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
|
|
+ if (result.Failures > 0)
|
|
{
|
|
{
|
|
hasRefreshedMetadata = false;
|
|
hasRefreshedMetadata = false;
|
|
}
|
|
}
|
|
@@ -138,19 +133,13 @@ namespace MediaBrowser.Providers.Manager
|
|
var result = await itemImageProvider.RefreshImages(itemOfType, libraryOptions, providers, refreshOptions, config, cancellationToken).ConfigureAwait(false);
|
|
var result = await itemImageProvider.RefreshImages(itemOfType, libraryOptions, providers, refreshOptions, config, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
|
updateType = updateType | result.UpdateType;
|
|
updateType = updateType | result.UpdateType;
|
|
- if (result.Failures == 0)
|
|
|
|
- {
|
|
|
|
- hasRefreshedImages = true;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
|
|
+ if (result.Failures > 0)
|
|
{
|
|
{
|
|
hasRefreshedImages = false;
|
|
hasRefreshedImages = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- var isFirstRefresh = item.DateLastRefreshed == default(DateTime);
|
|
|
|
-
|
|
|
|
var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh, updateType).ConfigureAwait(false);
|
|
var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh, updateType).ConfigureAwait(false);
|
|
updateType = updateType | beforeSaveResult;
|
|
updateType = updateType | beforeSaveResult;
|
|
|
|
|
|
@@ -373,15 +362,18 @@ namespace MediaBrowser.Providers.Manager
|
|
/// Gets the providers.
|
|
/// Gets the providers.
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <returns>IEnumerable{`0}.</returns>
|
|
/// <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
|
|
// Get providers to refresh
|
|
var providers = ((ProviderManager)ProviderManager).GetMetadataProviders<TItemType>(item).ToList();
|
|
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
|
|
// 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)
|
|
if (!runAllProviders)
|
|
{
|
|
{
|
|
@@ -404,6 +396,9 @@ namespace MediaBrowser.Providers.Manager
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ var anyRemoteProvidersChanged = providersWithChanges.OfType<IRemoteMetadataProvider>()
|
|
|
|
+ .Any();
|
|
|
|
+
|
|
providers = providers.Where(i =>
|
|
providers = providers.Where(i =>
|
|
{
|
|
{
|
|
// If any provider reports a change, always run local ones as well
|
|
// If any provider reports a change, always run local ones as well
|
|
@@ -412,9 +407,6 @@ namespace MediaBrowser.Providers.Manager
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
- var anyRemoteProvidersChanged = providersWithChanges.OfType<IRemoteMetadataProvider>()
|
|
|
|
- .Any();
|
|
|
|
-
|
|
|
|
// If any remote providers changed, run them all so that priorities can be honored
|
|
// If any remote providers changed, run them all so that priorities can be honored
|
|
if (i is IRemoteMetadataProvider)
|
|
if (i is IRemoteMetadataProvider)
|
|
{
|
|
{
|