mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-03 01:35:08 +02:00
parent
8512d5e693
commit
1dec8ae122
13 changed files with 213 additions and 83 deletions
|
@ -18,6 +18,7 @@ const Task = require('../objects/Task')
|
|||
class LibraryScanner {
|
||||
constructor() {
|
||||
this.cancelLibraryScan = {}
|
||||
/** @type {string[]} - library ids */
|
||||
this.librariesScanning = []
|
||||
|
||||
this.scanningFilesChanged = false
|
||||
|
@ -30,7 +31,7 @@ class LibraryScanner {
|
|||
* @returns {boolean}
|
||||
*/
|
||||
isLibraryScanning(libraryId) {
|
||||
return this.librariesScanning.some((ls) => ls.id === libraryId)
|
||||
return this.librariesScanning.some((lid) => lid === libraryId)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,8 +39,7 @@ class LibraryScanner {
|
|||
* @param {string} libraryId
|
||||
*/
|
||||
setCancelLibraryScan(libraryId) {
|
||||
const libraryScanning = this.librariesScanning.find((ls) => ls.id === libraryId)
|
||||
if (!libraryScanning) return
|
||||
if (!this.isLibraryScanning(libraryId)) return
|
||||
this.cancelLibraryScan[libraryId] = true
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ class LibraryScanner {
|
|||
const libraryScan = new LibraryScan()
|
||||
libraryScan.setData(library)
|
||||
libraryScan.verbose = true
|
||||
this.librariesScanning.push(libraryScan.getScanEmitData)
|
||||
this.librariesScanning.push(libraryScan.libraryId)
|
||||
|
||||
const taskData = {
|
||||
libraryId: library.id,
|
||||
|
@ -103,17 +103,31 @@ class LibraryScanner {
|
|||
await library.save()
|
||||
}
|
||||
|
||||
task.setFinished(`${canceled ? 'Canceled' : 'Completed'}. ${libraryScan.scanResultsString}`)
|
||||
task.data.scanResults = libraryScan.scanResults
|
||||
if (canceled) {
|
||||
const taskFinishedString = {
|
||||
text: 'Task canceled by user',
|
||||
key: 'MessageTaskCanceledByUser'
|
||||
}
|
||||
task.setFinished(taskFinishedString)
|
||||
} else {
|
||||
task.setFinished(null, true)
|
||||
}
|
||||
} catch (err) {
|
||||
libraryScan.setComplete(err)
|
||||
libraryScan.setComplete()
|
||||
|
||||
Logger.error(`[LibraryScanner] Library scan ${libraryScan.id} failed after ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}.`, err)
|
||||
|
||||
task.setFailedText(`Failed. ${libraryScan.scanResultsString}`)
|
||||
task.data.scanResults = libraryScan.scanResults
|
||||
const taskFailedString = {
|
||||
text: 'Failed',
|
||||
key: 'MessageTaskFailed'
|
||||
}
|
||||
task.setFailed(taskFailedString)
|
||||
}
|
||||
|
||||
if (this.cancelLibraryScan[libraryScan.libraryId]) delete this.cancelLibraryScan[libraryScan.libraryId]
|
||||
this.librariesScanning = this.librariesScanning.filter((ls) => ls.id !== library.id)
|
||||
this.librariesScanning = this.librariesScanning.filter((lid) => lid !== library.id)
|
||||
|
||||
TaskManager.taskFinished(task)
|
||||
|
||||
|
@ -446,9 +460,15 @@ class LibraryScanner {
|
|||
if (results.added) resultStrs.push(`${results.added} added`)
|
||||
if (results.updated) resultStrs.push(`${results.updated} updated`)
|
||||
if (results.removed) resultStrs.push(`${results.removed} missing`)
|
||||
let scanResultStr = 'Scan finished with no changes'
|
||||
let scanResultStr = 'No changes needed'
|
||||
if (resultStrs.length) scanResultStr = resultStrs.join(', ')
|
||||
pendingTask.setFinished(scanResultStr)
|
||||
|
||||
pendingTask.data.scanResults = {
|
||||
...results,
|
||||
text: scanResultStr,
|
||||
elapsed: Date.now() - pendingTask.startedAt
|
||||
}
|
||||
pendingTask.setFinished(null, true)
|
||||
TaskManager.taskFinished(pendingTask)
|
||||
|
||||
this.scanningFilesChanged = false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue