diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 23 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderManager.cs | 13 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderUtils.cs | 4 |
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>(); } } |
