@ -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 ) ;
}