aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/MetadataService.cs
diff options
context:
space:
mode:
authorThomas Gillen <thomas.gillen@googlemail.com>2014-05-06 03:00:16 +0100
committerThomas Gillen <thomas.gillen@googlemail.com>2014-05-07 22:19:04 +0100
commit0a3381471ddadd7769526c5f40915e7da8ea965d (patch)
tree906025cd64618f6a1dfab5150d78ff3b13d722c3 /MediaBrowser.Providers/Manager/MetadataService.cs
parenta14e919a8570cabdbb60eb7bb579a18290f1380f (diff)
Updating tvdb providers to use item identities
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs32
1 files changed, 25 insertions, 7 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index c0ef7e144c..992a519e7d 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -104,6 +104,9 @@ namespace MediaBrowser.Providers.Manager
refreshResult.AddStatus(ProviderRefreshStatus.Failure, ex.Message);
}
+ // Identify item
+ TIdType id = null;
+
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
@@ -120,7 +123,8 @@ namespace MediaBrowser.Providers.Manager
if (providers.Count > 0)
{
- var result = await RefreshWithProviders(itemOfType, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
+ id = await CreateInitialLookupInfo(itemOfType, cancellationToken).ConfigureAwait(false);
+ var result = await RefreshWithProviders(itemOfType, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
refreshResult.AddStatus(result.Status, result.ErrorMessage);
@@ -129,6 +133,13 @@ namespace MediaBrowser.Providers.Manager
}
}
+ if (id == null)
+ {
+ id = await CreateInitialLookupInfo(itemOfType, cancellationToken).ConfigureAwait(false);
+ }
+
+ MergeIdentities(itemOfType, id);
+
// Next run remote image providers, but only if local image providers didn't throw an exception
if (!localImagesFailed && refreshOptions.ImageRefreshMode != ImageRefreshMode.ValidationOnly)
{
@@ -162,6 +173,15 @@ namespace MediaBrowser.Providers.Manager
}
}
+ private void MergeIdentities(TItemType item, TIdType id)
+ {
+ var hasIdentity = id as IHasIdentities<IItemIdentity>;
+ if (hasIdentity != null)
+ {
+ item.Identities = hasIdentity.Identities.ToList();
+ }
+ }
+
/// <summary>
/// Befores the save.
/// </summary>
@@ -267,7 +287,7 @@ namespace MediaBrowser.Providers.Manager
return item is TItemType;
}
- protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item, MetadataRefreshOptions options, List<IMetadataProvider> providers, ItemImageProvider imageService, CancellationToken cancellationToken)
+ protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item, TIdType id, MetadataRefreshOptions options, List<IMetadataProvider> providers, ItemImageProvider imageService, CancellationToken cancellationToken)
{
var refreshResult = new RefreshResult
{
@@ -288,7 +308,7 @@ namespace MediaBrowser.Providers.Manager
// If replacing all metadata, run internet providers first
if (options.ReplaceAllMetadata)
{
- await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false);
+ await ExecuteRemoteProviders(item, temp, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false);
}
var hasLocalMetadata = false;
@@ -346,7 +366,7 @@ namespace MediaBrowser.Providers.Manager
// Local metadata is king - if any is found don't run remote providers
if (!options.ReplaceAllMetadata && (!hasLocalMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh))
{
- await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false);
+ await ExecuteRemoteProviders(item, temp, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false);
}
if (refreshResult.UpdateType > ItemUpdateType.None)
@@ -387,10 +407,8 @@ namespace MediaBrowser.Providers.Manager
return new TItemType();
}
- private async Task ExecuteRemoteProviders(TItemType item, TItemType temp, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, RefreshResult refreshResult, CancellationToken cancellationToken)
+ private async Task ExecuteRemoteProviders(TItemType item, TItemType temp, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, RefreshResult refreshResult, CancellationToken cancellationToken)
{
- TIdType id = await CreateInitialLookupInfo(item, cancellationToken).ConfigureAwait(false);
-
var unidentifiedCount = 0;
var identifiedCount = 0;