aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/MetadataService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs53
1 files changed, 34 insertions, 19 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index da82dcb3f..c817180c5 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
@@ -230,13 +231,23 @@ namespace MediaBrowser.Providers.Manager
protected virtual TIdType GetId(TItemType item)
{
- return new TIdType
+ var id = new TIdType
{
MetadataCountryCode = item.GetPreferredMetadataCountryCode(),
MetadataLanguage = item.GetPreferredMetadataLanguage(),
Name = item.Name,
ProviderIds = item.ProviderIds
};
+
+ var baseItem = item as BaseItem;
+
+ if (baseItem != null)
+ {
+ id.IndexNumber = baseItem.IndexNumber;
+ id.ParentIndexNumber = baseItem.ParentIndexNumber;
+ }
+
+ return id;
}
public bool CanRefresh(IHasMetadata item)
@@ -253,6 +264,7 @@ namespace MediaBrowser.Providers.Manager
};
var temp = CreateNew();
+ temp.Path = item.Path;
// If replacing all metadata, run internet providers first
if (options.ReplaceAllMetadata)
@@ -313,29 +325,32 @@ namespace MediaBrowser.Providers.Manager
foreach (var provider in providers.OfType<ICustomMetadataProvider<TItemType>>())
{
- Logger.Debug("Running {0} for {1}", provider.GetType().Name, item.Path ?? item.Name);
-
- try
- {
- await provider.FetchAsync(item, cancellationToken).ConfigureAwait(false);
-
- refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload;
- }
- catch (OperationCanceledException)
- {
- throw;
- }
- catch (Exception ex)
- {
- refreshResult.Status = ProviderRefreshStatus.CompletedWithErrors;
- refreshResult.ErrorMessage = ex.Message;
- Logger.ErrorException("Error in {0}", ex, provider.Name);
- }
+ await RunCustomProvider(provider, item, refreshResult, cancellationToken).ConfigureAwait(false);
}
return refreshResult;
}
+ private async Task RunCustomProvider(ICustomMetadataProvider<TItemType> provider, TItemType item, RefreshResult refreshResult, CancellationToken cancellationToken)
+ {
+ Logger.Debug("Running {0} for {1}", provider.GetType().Name, item.Path ?? item.Name);
+
+ try
+ {
+ refreshResult.UpdateType = refreshResult.UpdateType | await provider.FetchAsync(item, cancellationToken).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ throw;
+ }
+ catch (Exception ex)
+ {
+ refreshResult.Status = ProviderRefreshStatus.CompletedWithErrors;
+ refreshResult.ErrorMessage = ex.Message;
+ Logger.ErrorException("Error in {0}", ex, provider.Name);
+ }
+ }
+
protected virtual TItemType CreateNew()
{
return new TItemType();