diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index b2e23682b..c0ef7e144 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -389,7 +389,7 @@ namespace MediaBrowser.Providers.Manager private async Task ExecuteRemoteProviders(TItemType item, TItemType temp, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, RefreshResult refreshResult, CancellationToken cancellationToken) { - TIdType id = null; + TIdType id = await CreateInitialLookupInfo(item, cancellationToken).ConfigureAwait(false); var unidentifiedCount = 0; var identifiedCount = 0; @@ -399,11 +399,7 @@ namespace MediaBrowser.Providers.Manager var providerName = provider.GetType().Name; Logger.Debug("Running {0} for {1}", providerName, item.Path ?? item.Name); - if (id == null) - { - id = item.GetLookupInfo(); - } - else + if (id != null) { MergeNewData(temp, id); } @@ -448,6 +444,19 @@ namespace MediaBrowser.Providers.Manager } } + private async Task<TIdType> CreateInitialLookupInfo(TItemType item, CancellationToken cancellationToken) + { + var info = item.GetLookupInfo(); + + var hasIdentity = info as IHasIdentities<IItemIdentity>; + if (hasIdentity != null) + { + await hasIdentity.FindIdentities(ProviderManager, cancellationToken).ConfigureAwait(false); + } + + return info; + } + private void MergeNewData(TItemType source, TIdType lookupInfo) { // Copy new provider id's that may have been obtained |
