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.cs67
1 files changed, 24 insertions, 43 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 9776c4e2f..c535f33ba 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -42,6 +42,13 @@ namespace MediaBrowser.Providers.Manager
var config = ProviderManager.GetMetadataOptions(item);
var updateType = ItemUpdateType.None;
+ var requiresRefresh = false;
+
+ if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
+ {
+ // TODO: If this returns true, should we instead just change metadata refresh mode to Full?
+ requiresRefresh = item.RequiresRefresh();
+ }
var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem);
var localImagesFailed = false;
@@ -70,14 +77,10 @@ namespace MediaBrowser.Providers.Manager
bool hasRefreshedMetadata = true;
bool hasRefreshedImages = true;
- var requiresRefresh = false;
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
- // TODO: If this returns true, should we instead just change metadata refresh mode to Full?
- requiresRefresh = item.RequiresRefresh();
-
var providers = GetProviders(item, refreshOptions, requiresRefresh)
.ToList();
@@ -138,7 +141,7 @@ namespace MediaBrowser.Providers.Manager
}
}
- var isFirstRefresh = GetLastRefreshDate(item) == default(DateTime);
+ 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;
@@ -149,7 +152,7 @@ namespace MediaBrowser.Providers.Manager
if (file != null)
{
var fileLastWriteTime = file.LastWriteTimeUtc;
- if (item.EnableForceSaveOnDateModifiedChange && fileLastWriteTime != item.DateModified)
+ if (item.EnableRefreshOnDateModifiedChange && fileLastWriteTime != item.DateModified)
{
Logger.Debug("Date modified for {0}. Old date {1} new date {2} Id {3}", item.Path, item.DateModified, fileLastWriteTime, item.Id);
requiresRefresh = true;
@@ -193,11 +196,6 @@ namespace MediaBrowser.Providers.Manager
lookupInfo.Year = result.ProductionYear;
}
- private DateTime GetLastRefreshDate(IHasMetadata item)
- {
- return item.DateLastRefreshed;
- }
-
protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
{
if (result.Item.SupportsPeople && result.People != null)
@@ -289,6 +287,20 @@ namespace MediaBrowser.Providers.Manager
updateType |= SaveCumulativeRunTimeTicks(item, isFullRefresh, currentUpdateType);
updateType |= SaveDateLastMediaAdded(item, isFullRefresh, currentUpdateType);
+ var presentationUniqueKey = item.CreatePresentationUniqueKey();
+ if (!string.Equals(item.PresentationUniqueKey, presentationUniqueKey, StringComparison.Ordinal))
+ {
+ item.PresentationUniqueKey = presentationUniqueKey;
+ updateType |= ItemUpdateType.MetadataImport;
+ }
+
+ var inheritedParentalRatingValue = item.GetInheritedParentalRatingValue() ?? 0;
+ if (inheritedParentalRatingValue != item.InheritedParentalRatingValue)
+ {
+ item.InheritedParentalRatingValue = inheritedParentalRatingValue;
+ updateType |= ItemUpdateType.MetadataImport;
+ }
+
return updateType;
}
@@ -354,9 +366,6 @@ namespace MediaBrowser.Providers.Manager
if (!runAllProviders)
{
- // Avoid implicitly captured closure
- var currentItem = item;
-
var providersWithChanges = providers
.Where(i =>
{
@@ -366,12 +375,6 @@ namespace MediaBrowser.Providers.Manager
return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
}
- var hasChangeMonitor = i as IHasChangeMonitor;
- if (hasChangeMonitor != null)
- {
- return HasChanged(item, hasChangeMonitor, currentItem.DateLastSaved, options.DirectoryService);
- }
-
return false;
})
.ToList();
@@ -539,7 +542,7 @@ namespace MediaBrowser.Providers.Manager
}
// Local metadata is king - if any is found don't run remote providers
- if (!options.ReplaceAllMetadata && (!hasLocalMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh))
+ if (!options.ReplaceAllMetadata && (!hasLocalMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !item.StopRefreshIfLocalMetadataFound))
{
var remoteResult = await ExecuteRemoteProviders(temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
.ConfigureAwait(false);
@@ -652,7 +655,6 @@ namespace MediaBrowser.Providers.Manager
}
else
{
- refreshResult.Failures++;
Logger.Debug("{0} returned no metadata for {1}", providerName, logName);
}
}
@@ -732,27 +734,6 @@ namespace MediaBrowser.Providers.Manager
return false;
}
}
-
- private bool HasChanged(IHasMetadata item, IHasChangeMonitor changeMonitor, DateTime date, IDirectoryService directoryService)
- {
- try
- {
- var hasChanged = changeMonitor.HasChanged(item, directoryService, date);
-
- //if (hasChanged)
- //{
- // Logger.Debug("{0} reports change to {1} since {2}", changeMonitor.GetType().Name,
- // item.Path ?? item.Name, date);
- //}
-
- return hasChanged;
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error in {0}.HasChanged", ex, changeMonitor.GetType().Name);
- return false;
- }
- }
}
public class RefreshResult