aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/MetadataService.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-09-22 17:58:18 -0400
committerGitHub <noreply@github.com>2016-09-22 17:58:18 -0400
commit2c78e43aad729b25733e7b2761492c01449dbe43 (patch)
tree05c0de307a291960d73e2951aa83b8165e44bb3b /MediaBrowser.Providers/Manager/MetadataService.cs
parenteee9c0e0489087f4a8f611165e547f8f2dd353d5 (diff)
parent9f5cf9de0c60310f1f15f777ecadc3fa39696f60 (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.cs36
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;
}