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) {
|
if (this.isBookLibrary) {
|
||||||
items.push({
|
|
||||||
text: this.$strings.ButtonForceReScan,
|
|
||||||
action: 'force-rescan',
|
|
||||||
value: 'force-rescan'
|
|
||||||
})
|
|
||||||
items.push({
|
items.push({
|
||||||
text: this.$strings.ButtonMatchBooks,
|
text: this.$strings.ButtonMatchBooks,
|
||||||
action: 'match-books',
|
action: 'match-books',
|
||||||
|
@ -80,6 +80,9 @@ class Library extends Model {
|
|||||||
mediaType: libraryExpanded.mediaType,
|
mediaType: libraryExpanded.mediaType,
|
||||||
provider: libraryExpanded.provider,
|
provider: libraryExpanded.provider,
|
||||||
settings: libraryExpanded.settings,
|
settings: libraryExpanded.settings,
|
||||||
|
lastScan: libraryExpanded.lastScan?.valueOf() || null,
|
||||||
|
lastScanVersion: libraryExpanded.lastScanVersion || null,
|
||||||
|
lastScanMetadataPrecedence: libraryExpanded.extraData?.lastScanMetadataPrecedence || null,
|
||||||
createdAt: libraryExpanded.createdAt.valueOf(),
|
createdAt: libraryExpanded.createdAt.valueOf(),
|
||||||
lastUpdate: libraryExpanded.updatedAt.valueOf()
|
lastUpdate: libraryExpanded.updatedAt.valueOf()
|
||||||
})
|
})
|
||||||
@ -152,6 +155,9 @@ class Library extends Model {
|
|||||||
if (oldLibrary.oldLibraryId) {
|
if (oldLibrary.oldLibraryId) {
|
||||||
extraData.oldLibraryId = oldLibrary.oldLibraryId
|
extraData.oldLibraryId = oldLibrary.oldLibraryId
|
||||||
}
|
}
|
||||||
|
if (oldLibrary.lastScanMetadataPrecedence) {
|
||||||
|
extraData.lastScanMetadataPrecedence = oldLibrary.lastScanMetadataPrecedence
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
id: oldLibrary.id,
|
id: oldLibrary.id,
|
||||||
name: oldLibrary.name,
|
name: oldLibrary.name,
|
||||||
@ -160,6 +166,8 @@ class Library extends Model {
|
|||||||
mediaType: oldLibrary.mediaType || null,
|
mediaType: oldLibrary.mediaType || null,
|
||||||
provider: oldLibrary.provider,
|
provider: oldLibrary.provider,
|
||||||
settings: oldLibrary.settings?.toJSON() || {},
|
settings: oldLibrary.settings?.toJSON() || {},
|
||||||
|
lastScan: oldLibrary.lastScan || null,
|
||||||
|
lastScanVersion: oldLibrary.lastScanVersion || null,
|
||||||
createdAt: oldLibrary.createdAt,
|
createdAt: oldLibrary.createdAt,
|
||||||
updatedAt: oldLibrary.lastUpdate,
|
updatedAt: oldLibrary.lastUpdate,
|
||||||
extraData
|
extraData
|
||||||
|
@ -15,6 +15,9 @@ class Library {
|
|||||||
this.provider = 'google'
|
this.provider = 'google'
|
||||||
|
|
||||||
this.lastScan = 0
|
this.lastScan = 0
|
||||||
|
this.lastScanVersion = null
|
||||||
|
this.lastScanMetadataPrecedence = null
|
||||||
|
|
||||||
this.settings = null
|
this.settings = null
|
||||||
|
|
||||||
this.createdAt = null
|
this.createdAt = null
|
||||||
@ -53,6 +56,10 @@ class Library {
|
|||||||
this.settings.disableWatcher = !!library.disableWatcher
|
this.settings.disableWatcher = !!library.disableWatcher
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.lastScan = library.lastScan
|
||||||
|
this.lastScanVersion = library.lastScanVersion
|
||||||
|
this.lastScanMetadataPrecedence = library.lastScanMetadataPrecedence
|
||||||
|
|
||||||
this.createdAt = library.createdAt
|
this.createdAt = library.createdAt
|
||||||
this.lastUpdate = library.lastUpdate
|
this.lastUpdate = library.lastUpdate
|
||||||
this.cleanOldValues() // mediaType changed for v2 and icon change for v2.2.2
|
this.cleanOldValues() // mediaType changed for v2 and icon change for v2.2.2
|
||||||
@ -84,6 +91,8 @@ class Library {
|
|||||||
mediaType: this.mediaType,
|
mediaType: this.mediaType,
|
||||||
provider: this.provider,
|
provider: this.provider,
|
||||||
settings: this.settings.toJSON(),
|
settings: this.settings.toJSON(),
|
||||||
|
lastScan: this.lastScan,
|
||||||
|
lastScanVersion: this.lastScanVersion,
|
||||||
createdAt: this.createdAt,
|
createdAt: this.createdAt,
|
||||||
lastUpdate: this.lastUpdate
|
lastUpdate: this.lastUpdate
|
||||||
}
|
}
|
||||||
|
@ -48,15 +48,21 @@ class LibraryScanner {
|
|||||||
*/
|
*/
|
||||||
async scan(library, forceRescan = false) {
|
async scan(library, forceRescan = false) {
|
||||||
if (this.isLibraryScanning(library.id)) {
|
if (this.isLibraryScanning(library.id)) {
|
||||||
Logger.error(`[Scanner] Already scanning ${library.id}`)
|
Logger.error(`[LibraryScanner] Already scanning ${library.id}`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!library.folders.length) {
|
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
|
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()
|
const libraryScan = new LibraryScan()
|
||||||
libraryScan.setData(library)
|
libraryScan.setData(library)
|
||||||
libraryScan.verbose = true
|
libraryScan.verbose = true
|
||||||
@ -64,18 +70,18 @@ class LibraryScanner {
|
|||||||
|
|
||||||
SocketAuthority.emitter('scan_start', libraryScan.getScanEmitData)
|
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)
|
const canceled = await this.scanLibrary(libraryScan, forceRescan)
|
||||||
|
|
||||||
if (canceled) {
|
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]
|
delete this.cancelLibraryScan[libraryScan.libraryId]
|
||||||
}
|
}
|
||||||
|
|
||||||
libraryScan.setComplete()
|
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)
|
this.librariesScanning = this.librariesScanning.filter(ls => ls.id !== library.id)
|
||||||
|
|
||||||
if (canceled && !libraryScan.totalResults) {
|
if (canceled && !libraryScan.totalResults) {
|
||||||
@ -85,6 +91,13 @@ class LibraryScanner {
|
|||||||
return
|
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)
|
SocketAuthority.emitter('scan_complete', libraryScan.getScanEmitData)
|
||||||
|
|
||||||
if (libraryScan.totalResults) {
|
if (libraryScan.totalResults) {
|
||||||
|
Loading…
Reference in New Issue
Block a user