mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +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