aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-28 19:17:55 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-28 19:17:55 -0400
commit5ca4d60c34c7ead76c388bd2c3ca192b38aae1f0 (patch)
tree9e9bc711c6b422c7f3eabdac5cd3cf2a8e5a11b8 /MediaBrowser.Providers/Manager
parent67528a07992326472a4e6dfe826ddcc5358a6f67 (diff)
connect updates
Diffstat (limited to 'MediaBrowser.Providers/Manager')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs20
-rw-r--r--MediaBrowser.Providers/Manager/ProviderUtils.cs58
2 files changed, 52 insertions, 26 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 1f46ee488e..e27c39df13 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -350,6 +350,7 @@ namespace MediaBrowser.Providers.Manager
{
var remoteResult = await ExecuteRemoteProviders(item, temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
.ConfigureAwait(false);
+
refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
refreshResult.Status = remoteResult.Status;
refreshResult.ErrorMessage = remoteResult.ErrorMessage;
@@ -359,8 +360,9 @@ namespace MediaBrowser.Providers.Manager
var hasLocalMetadata = false;
var userDataList = new List<UserItemData>();
+ var localProviders = providers.OfType<ILocalMetadataProvider<TItemType>>().ToList();
- foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>())
+ foreach (var provider in localProviders)
{
var providerName = provider.GetType().Name;
Logger.Debug("Running {0} for {1}", providerName, logName);
@@ -428,6 +430,16 @@ namespace MediaBrowser.Providers.Manager
successfulProviderCount += remoteResult.Successes;
}
+ // 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)
{
MergeData(temp, item, item.LockedFields, true, true);
@@ -598,7 +610,11 @@ namespace MediaBrowser.Providers.Manager
}
}
- protected abstract void MergeData(TItemType source, TItemType target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings);
+ protected abstract void MergeData(TItemType source,
+ TItemType target,
+ List<MetadataFields> lockedFields,
+ bool replaceData,
+ bool mergeMetadataSettings);
public virtual int Order
{
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index 2c19c33123..155cd208f3 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -8,7 +8,11 @@ namespace MediaBrowser.Providers.Manager
{
public static class ProviderUtils
{
- public static void MergeBaseItemData(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ public static void MergeBaseItemData(BaseItem source,
+ BaseItem target,
+ List<MetadataFields> lockedFields,
+ bool replaceData,
+ bool mergeMetadataSettings)
{
if (!lockedFields.Contains(MetadataFields.Name))
{
@@ -191,36 +195,42 @@ namespace MediaBrowser.Providers.Manager
if (mergeMetadataSettings)
{
- target.ForcedSortName = source.ForcedSortName;
- target.LockedFields = source.LockedFields;
- target.IsLocked = source.IsLocked;
- target.DisplayMediaType = source.DisplayMediaType;
+ MergeMetadataSettings(source, target);
+ }
+ }
- // Grab the value if it's there, but if not then don't overwrite the default
- if (source.DateCreated != default(DateTime))
- {
- target.DateCreated = source.DateCreated;
- }
+ public static void MergeMetadataSettings(BaseItem source,
+ BaseItem target)
+ {
+ target.ForcedSortName = source.ForcedSortName;
+ target.LockedFields = source.LockedFields;
+ target.IsLocked = source.IsLocked;
+ target.DisplayMediaType = source.DisplayMediaType;
- var sourceHasLanguageSettings = source as IHasPreferredMetadataLanguage;
- var targetHasLanguageSettings = target as IHasPreferredMetadataLanguage;
+ // Grab the value if it's there, but if not then don't overwrite the default
+ if (source.DateCreated != default(DateTime))
+ {
+ target.DateCreated = source.DateCreated;
+ }
- if (sourceHasLanguageSettings != null && targetHasLanguageSettings != null)
- {
- targetHasLanguageSettings.PreferredMetadataCountryCode = sourceHasLanguageSettings.PreferredMetadataCountryCode;
- targetHasLanguageSettings.PreferredMetadataLanguage = sourceHasLanguageSettings.PreferredMetadataLanguage;
- }
+ var sourceHasLanguageSettings = source as IHasPreferredMetadataLanguage;
+ var targetHasLanguageSettings = target as IHasPreferredMetadataLanguage;
- var sourceHasDisplayOrder = source as IHasDisplayOrder;
- var targetHasDisplayOrder = target as IHasDisplayOrder;
+ if (sourceHasLanguageSettings != null && targetHasLanguageSettings != null)
+ {
+ targetHasLanguageSettings.PreferredMetadataCountryCode = sourceHasLanguageSettings.PreferredMetadataCountryCode;
+ targetHasLanguageSettings.PreferredMetadataLanguage = sourceHasLanguageSettings.PreferredMetadataLanguage;
+ }
- if (sourceHasDisplayOrder != null && targetHasDisplayOrder != null)
- {
- targetHasDisplayOrder.DisplayOrder = sourceHasDisplayOrder.DisplayOrder;
- }
+ var sourceHasDisplayOrder = source as IHasDisplayOrder;
+ var targetHasDisplayOrder = target as IHasDisplayOrder;
+
+ if (sourceHasDisplayOrder != null && targetHasDisplayOrder != null)
+ {
+ targetHasDisplayOrder.DisplayOrder = sourceHasDisplayOrder.DisplayOrder;
}
}
-
+
private static void MergeShortOverview(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
{
var sourceHasShortOverview = source as IHasShortOverview;