mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-04 06:04:25 -04:00
Fixed metadata refresh not working
This commit is contained in:
parent
c925f8688e
commit
9f7f9cc0ff
@ -209,7 +209,7 @@ public sealed class BaseItemRepository(
|
|||||||
result.TotalRecordCount = dbQuery.Count();
|
result.TotalRecordCount = dbQuery.Count();
|
||||||
}
|
}
|
||||||
|
|
||||||
dbQuery = ApplyOrder(dbQuery, filter);
|
dbQuery = ApplyGroupingFilter(dbQuery, filter);
|
||||||
dbQuery = ApplyQueryPageing(dbQuery, filter);
|
dbQuery = ApplyQueryPageing(dbQuery, filter);
|
||||||
|
|
||||||
result.Items = dbQuery.AsEnumerable().Where(e => e is not null).Select(w => DeserialiseBaseItem(w, filter.SkipDeserialization)).ToImmutableArray();
|
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 = TranslateQuery(dbQuery, context, filter);
|
||||||
// dbQuery = dbQuery.Distinct();
|
// dbQuery = dbQuery.Distinct();
|
||||||
dbQuery = ApplyOrder(dbQuery, filter);
|
|
||||||
dbQuery = ApplyGroupingFilter(dbQuery, filter);
|
dbQuery = ApplyGroupingFilter(dbQuery, filter);
|
||||||
dbQuery = ApplyQueryPageing(dbQuery, filter);
|
dbQuery = ApplyQueryPageing(dbQuery, filter);
|
||||||
|
|
||||||
@ -253,6 +252,7 @@ public sealed class BaseItemRepository(
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
dbQuery = dbQuery.Distinct();
|
dbQuery = dbQuery.Distinct();
|
||||||
|
dbQuery = ApplyOrder(dbQuery, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
return dbQuery;
|
return dbQuery;
|
||||||
|
@ -135,27 +135,7 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
|
var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
|
||||||
updateType |= beforeSaveResult;
|
updateType |= beforeSaveResult;
|
||||||
|
|
||||||
// Save if changes were made, or it's never been saved before
|
updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false);
|
||||||
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
|
// Next run metadata providers
|
||||||
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
|
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
|
||||||
@ -213,12 +193,40 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
if (hasRefreshedMetadata && hasRefreshedImages)
|
if (hasRefreshedMetadata && hasRefreshedImages)
|
||||||
{
|
{
|
||||||
item.DateLastRefreshed = DateTime.UtcNow;
|
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);
|
await AfterMetadataRefresh(itemOfType, refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
return updateType;
|
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)
|
private void ApplySearchResult(ItemLookupInfo lookupInfo, RemoteSearchResult result)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user