diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-09-22 17:58:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-09-22 17:58:18 -0400 |
| commit | 2c78e43aad729b25733e7b2761492c01449dbe43 (patch) | |
| tree | 05c0de307a291960d73e2951aa83b8165e44bb3b /MediaBrowser.Providers/Manager/MetadataService.cs | |
| parent | eee9c0e0489087f4a8f611165e547f8f2dd353d5 (diff) | |
| parent | 9f5cf9de0c60310f1f15f777ecadc3fa39696f60 (diff) | |
Merge pull request #1731 from softworkz/MetadataMerging
Prioritize metadata merging by preferred language
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 18405aae9..48f8ebb04 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -651,6 +651,8 @@ namespace MediaBrowser.Providers.Manager { var refreshResult = new RefreshResult(); + var results = new List<MetadataResult<TItemType>>(); + foreach (var provider in providers) { var providerName = provider.GetType().Name; @@ -667,7 +669,7 @@ namespace MediaBrowser.Providers.Manager if (result.HasMetadata) { - MergeData(result, temp, new List<MetadataFields>(), false, false); + results.Add(result); refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload; } @@ -688,6 +690,38 @@ namespace MediaBrowser.Providers.Manager } } + var orderedResults = new List<MetadataResult<TItemType>>(); + + if (string.IsNullOrEmpty(id.MetadataLanguage)) + { + orderedResults.AddRange(results); + } + else + { + // prioritize results with matching ResultLanguage + foreach (var result in results) + { + if (!string.IsNullOrEmpty(result.ResultLanguage) && result.ResultLanguage == id.MetadataLanguage && result.QueriedById) + { + orderedResults.Add(result); + } + } + + // add all other results + foreach (var result in results) + { + if (!orderedResults.Contains(result)) + { + orderedResults.Add(result); + } + } + } + + foreach (var result in results) + { + MergeData(result, temp, new List<MetadataFields>(), false, false); + } + return refreshResult; } |
