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, 32 insertions, 4 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index f40f175880..316809fa8b 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -12,6 +12,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommonIO;
+using MediaBrowser.Controller.Entities.Movies;
namespace MediaBrowser.Providers.Manager
{
@@ -82,7 +83,7 @@ namespace MediaBrowser.Providers.Manager
/// <returns>ProviderResult.</returns>
protected MetadataStatus GetLastResult(IHasMetadata item)
{
- if (item.DateLastSaved == default(DateTime))
+ if (GetLastRefreshDate(item) == default(DateTime))
{
return new MetadataStatus { ItemId = item.Id };
}
@@ -181,11 +182,13 @@ namespace MediaBrowser.Providers.Manager
}
}
- var beforeSaveResult = await BeforeSave(itemOfType, item.DateLastSaved == default(DateTime) || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh, updateType).ConfigureAwait(false);
+ var isFirstRefresh = GetLastRefreshDate(item) == default(DateTime);
+
+ var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh, updateType).ConfigureAwait(false);
updateType = updateType | beforeSaveResult;
// Save if changes were made, or it's never been saved before
- if (refreshOptions.ForceSave || updateType > ItemUpdateType.None || item.DateLastSaved == default(DateTime) || refreshOptions.ReplaceAllMetadata)
+ if (refreshOptions.ForceSave || updateType > ItemUpdateType.None || isFirstRefresh || refreshOptions.ReplaceAllMetadata)
{
// If any of these properties are set then make sure the updateType is not None, just to force everything to save
if (refreshOptions.ForceSave || refreshOptions.ReplaceAllMetadata)
@@ -193,6 +196,11 @@ namespace MediaBrowser.Providers.Manager
updateType = updateType | ItemUpdateType.MetadataDownload;
}
+ if (refreshOptions.MetadataRefreshMode >= MetadataRefreshMode.Default && refreshOptions.ImageRefreshMode >= ImageRefreshMode.Default)
+ {
+ item.DateLastRefreshed = DateTime.UtcNow;
+ }
+
// Save to database
await SaveItem(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
}
@@ -207,6 +215,26 @@ namespace MediaBrowser.Providers.Manager
return updateType;
}
+ private DateTime GetLastRefreshDate(IHasMetadata item)
+ {
+ if (item.DateLastRefreshed != default(DateTime))
+ {
+ return item.DateLastRefreshed;
+ }
+
+ if (ServerConfigurationManager.Configuration.EnableDateLastRefresh)
+ {
+ return item.DateLastRefreshed;
+ }
+
+ if (item is BoxSet)
+ {
+ return item.DateLastRefreshed;
+ }
+
+ return item.DateLastSaved;
+ }
+
protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
{
if (result.Item.SupportsPeople && result.People != null)
@@ -222,7 +250,7 @@ namespace MediaBrowser.Providers.Manager
item.AfterMetadataRefresh();
return _cachedTask;
}
-
+
private readonly Task<ItemUpdateType> _cachedResult = Task.FromResult(ItemUpdateType.None);
/// <summary>
/// Befores the save.