diff options
| author | JPVenson <github@jpb.email> | 2025-06-16 00:19:57 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-15 15:19:57 -0600 |
| commit | 4cd0a2ed8d2a0a81a77b80310e75371e72602eea (patch) | |
| tree | 4bf97508d46880a8c27a76ff637bfef8ec9d1908 /MediaBrowser.Providers/Manager/MetadataService.cs | |
| parent | aa05185917339d3c80183b8304302d3c8433cfbb (diff) | |
Always set update action when item does not exist (#14304)
Diffstat (limited to 'MediaBrowser.Providers/Manager/MetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index da241533a..cd95bf6ef 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -14,6 +14,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; @@ -33,7 +34,8 @@ namespace MediaBrowser.Providers.Manager IProviderManager providerManager, IFileSystem fileSystem, ILibraryManager libraryManager, - IExternalDataManager externalDataManager) + IExternalDataManager externalDataManager, + IItemRepository itemRepository) { ServerConfigurationManager = serverConfigurationManager; Logger = logger; @@ -41,6 +43,7 @@ namespace MediaBrowser.Providers.Manager FileSystem = fileSystem; LibraryManager = libraryManager; ExternalDataManager = externalDataManager; + ItemRepository = itemRepository; ImageProvider = new ItemImageProvider(Logger, ProviderManager, FileSystem); } @@ -58,6 +61,8 @@ namespace MediaBrowser.Providers.Manager protected IExternalDataManager ExternalDataManager { get; } + protected IItemRepository ItemRepository { get; } + protected virtual bool EnableUpdatingPremiereDateFromChildren => false; protected virtual bool EnableUpdatingGenresFromChildren => false; @@ -85,6 +90,7 @@ namespace MediaBrowser.Providers.Manager { var itemOfType = (TItemType)item; var updateType = ItemUpdateType.None; + var libraryOptions = LibraryManager.GetLibraryOptions(item); var isFirstRefresh = item.DateLastRefreshed.Date == DateTime.MinValue.Date; var hasRefreshedMetadata = true; @@ -141,7 +147,8 @@ namespace MediaBrowser.Providers.Manager Item = itemOfType }; - var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType); + var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType) + .ConfigureAwait(false); updateType |= beforeSaveResult; updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false); @@ -284,12 +291,20 @@ namespace MediaBrowser.Providers.Manager /// <param name="isFullRefresh">if set to <c>true</c> [is full refresh].</param> /// <param name="currentUpdateType">Type of the current update.</param> /// <returns>ItemUpdateType.</returns> - private ItemUpdateType BeforeSave(TItemType item, bool isFullRefresh, ItemUpdateType currentUpdateType) + private async Task<ItemUpdateType> BeforeSave(TItemType item, bool isFullRefresh, ItemUpdateType currentUpdateType) { var updateType = BeforeSaveInternal(item, isFullRefresh, currentUpdateType); updateType |= item.OnMetadataChanged(); + if (updateType == ItemUpdateType.None) + { + if (!await ItemRepository.ItemExistsAsync(item.Id).ConfigureAwait(false)) + { + return ItemUpdateType.MetadataImport; + } + } + return updateType; } |
