aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJPVenson <github@jpb.email>2024-11-16 20:30:43 +0000
committerJPVenson <github@jpb.email>2024-11-16 20:30:43 +0000
commit9f7f9cc0fffb2ada50feecc060f3ba069fcca7f2 (patch)
tree5c93201896d546ea39e0520921b49dbf867702a4
parentc925f8688e64186a8500febbf8021b1733f36d40 (diff)
Fixed metadata refresh not working
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.cs4
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs52
2 files changed, 32 insertions, 24 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
index ba86f5fbd..aa959318c 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
@@ -209,7 +209,7 @@ public sealed class BaseItemRepository(
result.TotalRecordCount = dbQuery.Count();
}
- dbQuery = ApplyOrder(dbQuery, filter);
+ dbQuery = ApplyGroupingFilter(dbQuery, filter);
dbQuery = ApplyQueryPageing(dbQuery, filter);
result.Items = dbQuery.AsEnumerable().Where(e => e is not null).Select(w => DeserialiseBaseItem(w, filter.SkipDeserialization)).ToImmutableArray();
@@ -228,7 +228,6 @@ public sealed class BaseItemRepository(
dbQuery = TranslateQuery(dbQuery, context, filter);
// dbQuery = dbQuery.Distinct();
- dbQuery = ApplyOrder(dbQuery, filter);
dbQuery = ApplyGroupingFilter(dbQuery, filter);
dbQuery = ApplyQueryPageing(dbQuery, filter);
@@ -253,6 +252,7 @@ public sealed class BaseItemRepository(
else
{
dbQuery = dbQuery.Distinct();
+ dbQuery = ApplyOrder(dbQuery, filter);
}
return dbQuery;
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index afa3fd206..778fbc712 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -135,27 +135,7 @@ 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 (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);
- }
+ updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false);
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
@@ -213,12 +193,40 @@ namespace MediaBrowser.Providers.Manager
if (hasRefreshedMetadata && hasRefreshedImages)
{
item.DateLastRefreshed = DateTime.UtcNow;
- await SaveItemAsync(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
}
+ updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false);
+
await AfterMetadataRefresh(itemOfType, refreshOptions, cancellationToken).ConfigureAwait(false);
return updateType;
+
+ async Task<ItemUpdateType> SaveInternal(BaseItem item, MetadataRefreshOptions refreshOptions, ItemUpdateType updateType, bool isFirstRefresh, bool requiresRefresh, MetadataResult<TItemType> metadataResult, CancellationToken cancellationToken)
+ {
+ // 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);
+ }
+
+ return updateType;
+ }
}
private void ApplySearchResult(ItemLookupInfo lookupInfo, RemoteSearchResult result)