|
@@ -360,7 +360,7 @@ namespace MediaBrowser.Providers.Manager
|
|
// If replacing all metadata, run internet providers first
|
|
// If replacing all metadata, run internet providers first
|
|
if (options.ReplaceAllMetadata)
|
|
if (options.ReplaceAllMetadata)
|
|
{
|
|
{
|
|
- var remoteResult = await ExecuteRemoteProviders(item, temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
|
|
|
|
|
|
+ var remoteResult = await ExecuteRemoteProviders(temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
|
|
.ConfigureAwait(false);
|
|
.ConfigureAwait(false);
|
|
|
|
|
|
refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
|
|
refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
|
|
@@ -372,9 +372,8 @@ namespace MediaBrowser.Providers.Manager
|
|
|
|
|
|
var hasLocalMetadata = false;
|
|
var hasLocalMetadata = false;
|
|
var userDataList = new List<UserItemData>();
|
|
var userDataList = new List<UserItemData>();
|
|
- var localProviders = providers.OfType<ILocalMetadataProvider<TItemType>>().ToList();
|
|
|
|
|
|
|
|
- foreach (var provider in localProviders)
|
|
|
|
|
|
+ foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>().ToList())
|
|
{
|
|
{
|
|
var providerName = provider.GetType().Name;
|
|
var providerName = provider.GetType().Name;
|
|
Logger.Debug("Running {0} for {1}", providerName, logName);
|
|
Logger.Debug("Running {0} for {1}", providerName, logName);
|
|
@@ -433,7 +432,7 @@ namespace MediaBrowser.Providers.Manager
|
|
// Local metadata is king - if any is found don't run remote providers
|
|
// 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))
|
|
{
|
|
{
|
|
- var remoteResult = await ExecuteRemoteProviders(item, temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
|
|
|
|
|
|
+ var remoteResult = await ExecuteRemoteProviders(temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
|
|
.ConfigureAwait(false);
|
|
.ConfigureAwait(false);
|
|
|
|
|
|
refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
|
|
refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
|
|
@@ -447,17 +446,15 @@ namespace MediaBrowser.Providers.Manager
|
|
|
|
|
|
if (providers.Any(i => !(i is ICustomMetadataProvider)))
|
|
if (providers.Any(i => !(i is ICustomMetadataProvider)))
|
|
{
|
|
{
|
|
- // If no local providers and doing a full refresh, take data from item itself
|
|
|
|
- if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh &&
|
|
|
|
- localProviders.Count == 0 &&
|
|
|
|
- refreshResult.UpdateType > ItemUpdateType.None)
|
|
|
|
- {
|
|
|
|
- // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
|
|
|
|
- MergeData(item, temp, new List<MetadataFields>(), false, true);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (refreshResult.UpdateType > ItemUpdateType.None)
|
|
if (refreshResult.UpdateType > ItemUpdateType.None)
|
|
{
|
|
{
|
|
|
|
+ // If no local metadata, take data from item itself
|
|
|
|
+ if (!hasLocalMetadata)
|
|
|
|
+ {
|
|
|
|
+ // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
|
|
|
|
+ MergeData(item, temp, new List<MetadataFields>(), false, true);
|
|
|
|
+ }
|
|
|
|
+
|
|
MergeData(temp, item, item.LockedFields, true, true);
|
|
MergeData(temp, item, item.LockedFields, true, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -529,7 +526,7 @@ namespace MediaBrowser.Providers.Manager
|
|
return new TItemType();
|
|
return new TItemType();
|
|
}
|
|
}
|
|
|
|
|
|
- private async Task<RefreshResult> ExecuteRemoteProviders(TItemType item, TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
|
|
|
|
|
|
+ private async Task<RefreshResult> ExecuteRemoteProviders(TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var refreshResult = new RefreshResult();
|
|
var refreshResult = new RefreshResult();
|
|
|
|
|