diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index ab6cb89a6..ab9525636 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -87,7 +87,7 @@ namespace MediaBrowser.Providers.Manager return ProviderRepo.GetMetadataStatus(item.Id) ?? new MetadataStatus { ItemId = item.Id }; } - public async Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) + public async Task<ItemUpdateType> RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { var itemOfType = (TItemType)item; var config = ProviderManager.GetMetadataOptions(item); @@ -163,7 +163,8 @@ namespace MediaBrowser.Providers.Manager } } - updateType = updateType | (await BeforeSave(itemOfType, item.DateLastSaved == default(DateTime) || refreshOptions.ReplaceAllMetadata, updateType).ConfigureAwait(false)); + var beforeSaveResult = await BeforeSave(itemOfType, item.DateLastSaved == default(DateTime) || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh, updateType).ConfigureAwait(false); + updateType = updateType | beforeSaveResult; // Save if changes were made, or it's never been saved before if (refreshOptions.ForceSave || updateType > ItemUpdateType.None || item.DateLastSaved == default(DateTime) || refreshOptions.ReplaceAllMetadata) @@ -184,6 +185,8 @@ namespace MediaBrowser.Providers.Manager } await AfterMetadataRefresh(itemOfType, refreshOptions, cancellationToken).ConfigureAwait(false); + + return updateType; } private readonly Task _cachedTask = Task.FromResult(true); @@ -397,7 +400,10 @@ namespace MediaBrowser.Providers.Manager refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport; // Only one local provider allowed per item - hasLocalMetadata = true; + if (IsFullLocalMetadata(localItem.Item)) + { + hasLocalMetadata = true; + } successfulProviderCount++; break; } @@ -473,6 +479,11 @@ namespace MediaBrowser.Providers.Manager return refreshResult; } + protected virtual bool IsFullLocalMetadata(TItemType item) + { + return true; + } + private async Task ImportUserData(TItemType item, List<UserItemData> userDataList, CancellationToken cancellationToken) { var hasUserData = item as IHasUserData; |
