aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/MetadataService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-26 22:28:13 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-09-26 22:28:13 -0400
commiteab030df7ff0f3a78b1aa01f06eb30f71df5a391 (patch)
tree47ac0dbafd3812b51f4ffa595009813be3ea1a40 /MediaBrowser.Providers/Manager/MetadataService.cs
parenta260432fdf15a762a371b6771a7f6556bdb49c2f (diff)
fixes #916 - Support reading playstate data from nfo's
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs33
1 files changed, 27 insertions, 6 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 8657d568f..af1e69c1a 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -24,14 +24,16 @@ namespace MediaBrowser.Providers.Manager
protected readonly IProviderManager ProviderManager;
protected readonly IProviderRepository ProviderRepo;
protected readonly IFileSystem FileSystem;
+ protected readonly IUserDataManager UserDataManager;
- protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem)
+ protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager)
{
ServerConfigurationManager = serverConfigurationManager;
Logger = logger;
ProviderManager = providerManager;
ProviderRepo = providerRepo;
FileSystem = fileSystem;
+ UserDataManager = userDataManager;
}
/// <summary>
@@ -304,7 +306,7 @@ namespace MediaBrowser.Providers.Manager
{
return HasChanged(item, hasFileChangeMonitor, status, options.DirectoryService);
}
-
+
return false;
})
.ToList();
@@ -356,6 +358,7 @@ namespace MediaBrowser.Providers.Manager
}
var hasLocalMetadata = false;
+ var userDataList = new List<UserItemData>();
foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>())
{
@@ -375,6 +378,8 @@ namespace MediaBrowser.Providers.Manager
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.ImageUpdate;
}
+ userDataList = localItem.UserDataLIst;
+
MergeData(localItem.Item, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
@@ -393,9 +398,9 @@ namespace MediaBrowser.Providers.Manager
catch (Exception ex)
{
failedProviderCount++;
-
+
Logger.ErrorException("Error in {0}", ex, provider.Name);
-
+
// If a local provider fails, consider that a failure
refreshResult.Status = ProviderRefreshStatus.Failure;
refreshResult.ErrorMessage = ex.Message;
@@ -441,9 +446,25 @@ namespace MediaBrowser.Providers.Manager
await RunCustomProvider(provider, item, options, refreshResult, cancellationToken).ConfigureAwait(false);
}
+ await ImportUserData(item, userDataList, cancellationToken).ConfigureAwait(false);
+
return refreshResult;
}
+ private async Task ImportUserData(TItemType item, List<UserItemData> userDataList, CancellationToken cancellationToken)
+ {
+ var hasUserData = item as IHasUserData;
+
+ if (hasUserData != null)
+ {
+ foreach (var userData in userDataList)
+ {
+ await UserDataManager.SaveUserData(userData.UserId, hasUserData, userData, UserDataSaveReason.Import, cancellationToken)
+ .ConfigureAwait(false);
+ }
+ }
+ }
+
private async Task RunCustomProvider(ICustomMetadataProvider<TItemType> provider, TItemType item, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
{
Logger.Debug("Running {0} for {1}", provider.GetType().Name, item.Path ?? item.Name);
@@ -539,13 +560,13 @@ namespace MediaBrowser.Providers.Manager
protected virtual void AfterRemoteRefresh(TItemType item)
{
-
+
}
private async Task<TIdType> CreateInitialLookupInfo(TItemType item, CancellationToken cancellationToken)
{
var info = item.GetLookupInfo();
-
+
var hasIdentity = info as IHasIdentities<IItemIdentity>;
if (hasIdentity != null)
{