Browse Source

Fixed base items not saved before Metadata

JPVenson 6 months ago
parent
commit
5167333602
1 changed files with 29 additions and 35 deletions
  1. 29 35
      MediaBrowser.Providers/Manager/MetadataService.cs

+ 29 - 35
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -74,10 +74,11 @@ namespace MediaBrowser.Providers.Manager
         public virtual async Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
         {
             var itemOfType = (TItemType)item;
-
             var updateType = ItemUpdateType.None;
-
             var libraryOptions = LibraryManager.GetLibraryOptions(item);
+            var isFirstRefresh = item.DateLastRefreshed == default;
+            var hasRefreshedMetadata = true;
+            var hasRefreshedImages = true;
 
             var requiresRefresh = libraryOptions.AutomaticRefreshIntervalDays > 0 && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays;
 
@@ -131,9 +132,30 @@ namespace MediaBrowser.Providers.Manager
                 People = LibraryManager.GetPeople(item)
             };
 
-            bool hasRefreshedMetadata = true;
-            bool hasRefreshedImages = true;
-            var isFirstRefresh = item.DateLastRefreshed == default;
+            var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
+            updateType |= beforeSaveResult;
+
+            // Save if changes were made, or it's never been saved before
+            if (refreshOptions.ForceSave || updateType > ItemUpdateType.None || isFirstRefresh || refreshOptions.ReplaceAllMetadata || requiresRefresh)
+            {
+                if (item.IsFileProtocol)
+                {
+                    var file = TryGetFile(item.Path, refreshOptions.DirectoryService);
+                    if (file is not null)
+                    {
+                        item.DateModified = file.LastWriteTimeUtc;
+                    }
+                }
+
+                // If any of these properties are set then make sure the updateType is not None, just to force everything to save
+                if (refreshOptions.ForceSave || refreshOptions.ReplaceAllMetadata)
+                {
+                    updateType |= ItemUpdateType.MetadataDownload;
+                }
+
+                // Save to database
+                await SaveItemAsync(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
+            }
 
             // Next run metadata providers
             if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
@@ -188,37 +210,9 @@ namespace MediaBrowser.Providers.Manager
                 }
             }
 
-            var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
-            updateType |= beforeSaveResult;
-
-            // Save if changes were made, or it's never been saved before
-            if (refreshOptions.ForceSave || updateType > ItemUpdateType.None || isFirstRefresh || refreshOptions.ReplaceAllMetadata || requiresRefresh)
+            if (hasRefreshedMetadata && hasRefreshedImages)
             {
-                if (item.IsFileProtocol)
-                {
-                    var file = TryGetFile(item.Path, refreshOptions.DirectoryService);
-                    if (file is not null)
-                    {
-                        item.DateModified = file.LastWriteTimeUtc;
-                    }
-                }
-
-                // If any of these properties are set then make sure the updateType is not None, just to force everything to save
-                if (refreshOptions.ForceSave || refreshOptions.ReplaceAllMetadata)
-                {
-                    updateType |= ItemUpdateType.MetadataDownload;
-                }
-
-                if (hasRefreshedMetadata && hasRefreshedImages)
-                {
-                    item.DateLastRefreshed = DateTime.UtcNow;
-                }
-                else
-                {
-                    item.DateLastRefreshed = default;
-                }
-
-                // Save to database
+                item.DateLastRefreshed = DateTime.UtcNow;
                 await SaveItemAsync(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
             }