mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Fixed base items not saved before Metadata
This commit is contained in:
parent
93adddd7a9
commit
5167333602
@ -74,10 +74,11 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
public virtual async Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
|
public virtual async Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var itemOfType = (TItemType)item;
|
var itemOfType = (TItemType)item;
|
||||||
|
|
||||||
var updateType = ItemUpdateType.None;
|
var updateType = ItemUpdateType.None;
|
||||||
|
|
||||||
var libraryOptions = LibraryManager.GetLibraryOptions(item);
|
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;
|
var requiresRefresh = libraryOptions.AutomaticRefreshIntervalDays > 0 && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays;
|
||||||
|
|
||||||
@ -131,9 +132,30 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
People = LibraryManager.GetPeople(item)
|
People = LibraryManager.GetPeople(item)
|
||||||
};
|
};
|
||||||
|
|
||||||
bool hasRefreshedMetadata = true;
|
var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
|
||||||
bool hasRefreshedImages = true;
|
updateType |= beforeSaveResult;
|
||||||
var isFirstRefresh = item.DateLastRefreshed == default;
|
|
||||||
|
// 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
|
// Next run metadata providers
|
||||||
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
|
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);
|
if (hasRefreshedMetadata && hasRefreshedImages)
|
||||||
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)
|
item.DateLastRefreshed = DateTime.UtcNow;
|
||||||
{
|
|
||||||
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
|
|
||||||
await SaveItemAsync(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
|
await SaveItemAsync(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user