diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-28 19:17:55 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-28 19:17:55 -0400 |
| commit | 5ca4d60c34c7ead76c388bd2c3ca192b38aae1f0 (patch) | |
| tree | 9e9bc711c6b422c7f3eabdac5cd3cf2a8e5a11b8 /MediaBrowser.Providers/Manager | |
| parent | 67528a07992326472a4e6dfe826ddcc5358a6f67 (diff) | |
connect updates
Diffstat (limited to 'MediaBrowser.Providers/Manager')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderUtils.cs | 58 |
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; |
