mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-03-05 00:18:30 +01:00
Library scanner saves last scan info including metadata precedence. Remove force re-scan
This commit is contained in:
parent
f84634e978
commit
c9a2fdcb29
@ -74,11 +74,6 @@ export default {
|
||||
}
|
||||
]
|
||||
if (this.isBookLibrary) {
|
||||
items.push({
|
||||
text: this.$strings.ButtonForceReScan,
|
||||
action: 'force-rescan',
|
||||
value: 'force-rescan'
|
||||
})
|
||||
items.push({
|
||||
text: this.$strings.ButtonMatchBooks,
|
||||
action: 'match-books',
|
||||
|
@ -80,6 +80,9 @@ class Library extends Model {
|
||||
mediaType: libraryExpanded.mediaType,
|
||||
provider: libraryExpanded.provider,
|
||||
settings: libraryExpanded.settings,
|
||||
lastScan: libraryExpanded.lastScan?.valueOf() || null,
|
||||
lastScanVersion: libraryExpanded.lastScanVersion || null,
|
||||
lastScanMetadataPrecedence: libraryExpanded.extraData?.lastScanMetadataPrecedence || null,
|
||||
createdAt: libraryExpanded.createdAt.valueOf(),
|
||||
lastUpdate: libraryExpanded.updatedAt.valueOf()
|
||||
})
|
||||
@ -152,6 +155,9 @@ class Library extends Model {
|
||||
if (oldLibrary.oldLibraryId) {
|
||||
extraData.oldLibraryId = oldLibrary.oldLibraryId
|
||||
}
|
||||
if (oldLibrary.lastScanMetadataPrecedence) {
|
||||
extraData.lastScanMetadataPrecedence = oldLibrary.lastScanMetadataPrecedence
|
||||
}
|
||||
return {
|
||||
id: oldLibrary.id,
|
||||
name: oldLibrary.name,
|
||||
@ -160,6 +166,8 @@ class Library extends Model {
|
||||
mediaType: oldLibrary.mediaType || null,
|
||||
provider: oldLibrary.provider,
|
||||
settings: oldLibrary.settings?.toJSON() || {},
|
||||
lastScan: oldLibrary.lastScan || null,
|
||||
lastScanVersion: oldLibrary.lastScanVersion || null,
|
||||
createdAt: oldLibrary.createdAt,
|
||||
updatedAt: oldLibrary.lastUpdate,
|
||||
extraData
|
||||
|
@ -15,6 +15,9 @@ class Library {
|
||||
this.provider = 'google'
|
||||
|
||||
this.lastScan = 0
|
||||
this.lastScanVersion = null
|
||||
this.lastScanMetadataPrecedence = null
|
||||
|
||||
this.settings = null
|
||||
|
||||
this.createdAt = null
|
||||
@ -53,6 +56,10 @@ class Library {
|
||||
this.settings.disableWatcher = !!library.disableWatcher
|
||||
}
|
||||
|
||||
this.lastScan = library.lastScan
|
||||
this.lastScanVersion = library.lastScanVersion
|
||||
this.lastScanMetadataPrecedence = library.lastScanMetadataPrecedence
|
||||
|
||||
this.createdAt = library.createdAt
|
||||
this.lastUpdate = library.lastUpdate
|
||||
this.cleanOldValues() // mediaType changed for v2 and icon change for v2.2.2
|
||||
@ -84,6 +91,8 @@ class Library {
|
||||
mediaType: this.mediaType,
|
||||
provider: this.provider,
|
||||
settings: this.settings.toJSON(),
|
||||
lastScan: this.lastScan,
|
||||
lastScanVersion: this.lastScanVersion,
|
||||
createdAt: this.createdAt,
|
||||
lastUpdate: this.lastUpdate
|
||||
}
|
||||
|
@ -48,15 +48,21 @@ class LibraryScanner {
|
||||
*/
|
||||
async scan(library, forceRescan = false) {
|
||||
if (this.isLibraryScanning(library.id)) {
|
||||
Logger.error(`[Scanner] Already scanning ${library.id}`)
|
||||
Logger.error(`[LibraryScanner] Already scanning ${library.id}`)
|
||||
return
|
||||
}
|
||||
|
||||
if (!library.folders.length) {
|
||||
Logger.warn(`[Scanner] Library has no folders to scan "${library.name}"`)
|
||||
Logger.warn(`[LibraryScanner] Library has no folders to scan "${library.name}"`)
|
||||
return
|
||||
}
|
||||
|
||||
if (library.isBook && library.settings.metadataPrecedence.join() !== library.lastScanMetadataPrecedence?.join()) {
|
||||
const lastScanMetadataPrecedence = library.lastScanMetadataPrecedence?.join() || 'Unset'
|
||||
Logger.info(`[LibraryScanner] Library metadata precedence changed since last scan. From [${lastScanMetadataPrecedence}] to [${library.settings.metadataPrecedence.join()}]`)
|
||||
forceRescan = true
|
||||
}
|
||||
|
||||
const libraryScan = new LibraryScan()
|
||||
libraryScan.setData(library)
|
||||
libraryScan.verbose = true
|
||||
@ -64,18 +70,18 @@ class LibraryScanner {
|
||||
|
||||
SocketAuthority.emitter('scan_start', libraryScan.getScanEmitData)
|
||||
|
||||
Logger.info(`[Scanner] Starting${forceRescan ? ' (forced)' : ''} library scan ${libraryScan.id} for ${libraryScan.libraryName}`)
|
||||
Logger.info(`[LibraryScanner] Starting${forceRescan ? ' (forced)' : ''} library scan ${libraryScan.id} for ${libraryScan.libraryName}`)
|
||||
|
||||
const canceled = await this.scanLibrary(libraryScan, forceRescan)
|
||||
|
||||
if (canceled) {
|
||||
Logger.info(`[Scanner] Library scan canceled for "${libraryScan.libraryName}"`)
|
||||
Logger.info(`[LibraryScanner] Library scan canceled for "${libraryScan.libraryName}"`)
|
||||
delete this.cancelLibraryScan[libraryScan.libraryId]
|
||||
}
|
||||
|
||||
libraryScan.setComplete()
|
||||
|
||||
Logger.info(`[Scanner] Library scan ${libraryScan.id} completed in ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}`)
|
||||
Logger.info(`[LibraryScanner] Library scan ${libraryScan.id} completed in ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}`)
|
||||
this.librariesScanning = this.librariesScanning.filter(ls => ls.id !== library.id)
|
||||
|
||||
if (canceled && !libraryScan.totalResults) {
|
||||
@ -85,6 +91,13 @@ class LibraryScanner {
|
||||
return
|
||||
}
|
||||
|
||||
library.lastScan = Date.now()
|
||||
library.lastScanVersion = packageJson.version
|
||||
if (library.isBook) {
|
||||
library.lastScanMetadataPrecedence = library.settings.metadataPrecedence
|
||||
}
|
||||
await Database.libraryModel.updateFromOld(library)
|
||||
|
||||
SocketAuthority.emitter('scan_complete', libraryScan.getScanEmitData)
|
||||
|
||||
if (libraryScan.totalResults) {
|
||||
|
Loading…
Reference in New Issue
Block a user