aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager')
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs23
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs13
-rw-r--r--MediaBrowser.Providers/Manager/ProviderUtils.cs4
3 files changed, 26 insertions, 14 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index c3d1ec080..cddc6f894 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -194,6 +194,15 @@ namespace MediaBrowser.Providers.Manager
return updateType;
}
+ protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
+ {
+ if (result.Item.SupportsPeople && result.People != null)
+ {
+ await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People.ToList());
+ }
+ await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false);
+ }
+
private readonly Task _cachedTask = Task.FromResult(true);
protected virtual Task AfterMetadataRefresh(TItemType item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{
@@ -328,15 +337,6 @@ namespace MediaBrowser.Providers.Manager
return providers;
}
- protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
- {
- if (result.Item.SupportsPeople)
- {
- await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People);
- }
- await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false);
- }
-
public bool CanRefresh(IHasMetadata item)
{
return item is TItemType;
@@ -408,7 +408,10 @@ namespace MediaBrowser.Providers.Manager
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.ImageUpdate;
}
- userDataList = localItem.UserDataLIst;
+ if (localItem.UserDataList != null)
+ {
+ userDataList.AddRange(localItem.UserDataList);
+ }
MergeData(localItem, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 14009a94f..fe0e4890c 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -106,9 +106,15 @@ namespace MediaBrowser.Providers.Manager
_identityProviders = identityProviders.ToArray();
_identityConverters = identityConverters.ToArray();
_metadataProviders = metadataProviders.ToArray();
- _savers = metadataSavers.ToArray();
_imageSavers = imageSavers.ToArray();
_externalIds = externalIds.OrderBy(i => i.Name).ToArray();
+
+ _savers = metadataSavers.Where(i =>
+ {
+ var configurable = i as IConfigurableProvider;
+
+ return configurable == null || configurable.IsEnabled;
+ }).ToArray();
}
public Task<ItemUpdateType> RefreshSingleItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken)
@@ -183,7 +189,7 @@ namespace MediaBrowser.Providers.Manager
var results = await Task.WhenAll(tasks).ConfigureAwait(false);
- var images = results.SelectMany(i => i);
+ var images = results.SelectMany(i => i.ToList());
return images;
}
@@ -912,6 +918,9 @@ namespace MediaBrowser.Providers.Manager
{
try
{
+ // Try to throttle this a little bit.
+ await Task.Delay(100).ConfigureAwait(false);
+
var artist = item as MusicArtist;
var task = artist == null
? RefreshItem(item, refreshItem.Item2, CancellationToken.None)
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index a0a0493d5..fa4840f10 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -105,9 +105,9 @@ namespace MediaBrowser.Providers.Manager
if (!lockedFields.Contains(MetadataFields.Cast))
{
- if (replaceData || targetResult.People.Count == 0)
+ if (replaceData || targetResult.People == null || targetResult.People.Count == 0)
{
- targetResult.People = sourceResult.People;
+ targetResult.People = sourceResult.People ?? new List<PersonInfo>();
}
}