From c2643329945e1d6b853a22ac56e3ce3cbe5e16fb Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 15 Oct 2023 12:55:22 -0500 Subject: [PATCH] Fix:Scanner detecting library item folder renames #1161 --- server/scanner/LibraryItemScanner.js | 7 ++++--- server/scanner/LibraryScanner.js | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/server/scanner/LibraryItemScanner.js b/server/scanner/LibraryItemScanner.js index e9ca3302..588b7744 100644 --- a/server/scanner/LibraryItemScanner.js +++ b/server/scanner/LibraryItemScanner.js @@ -21,9 +21,10 @@ class LibraryItemScanner { * Scan single library item * * @param {string} libraryItemId + * @param {{relPath:string, path:string}} [renamedPaths] used by watcher when item folder was renamed * @returns {number} ScanResult */ - async scanLibraryItem(libraryItemId) { + async scanLibraryItem(libraryItemId, renamedPaths = null) { // TODO: Add task manager const libraryItem = await Database.libraryItemModel.findByPk(libraryItemId) if (!libraryItem) { @@ -50,9 +51,9 @@ class LibraryItemScanner { const scanLogger = new ScanLogger() scanLogger.verbose = true - scanLogger.setData('libraryItem', libraryItem.relPath) + scanLogger.setData('libraryItem', renamedPaths?.relPath || libraryItem.relPath) - const libraryItemPath = fileUtils.filePathToPOSIX(libraryItem.path) + const libraryItemPath = renamedPaths?.path || fileUtils.filePathToPOSIX(libraryItem.path) const folder = library.libraryFolders[0] const libraryItemScanData = await this.getLibraryItemScanData(libraryItemPath, library, folder, false) diff --git a/server/scanner/LibraryScanner.js b/server/scanner/LibraryScanner.js index 64977e2d..44ccdd05 100644 --- a/server/scanner/LibraryScanner.js +++ b/server/scanner/LibraryScanner.js @@ -483,6 +483,7 @@ class LibraryScanner { path: potentialChildDirs }) + let renamedPaths = {} if (!existingLibraryItem) { const dirIno = await fileUtils.getIno(fullPath) existingLibraryItem = await Database.libraryItemModel.findOneOld({ @@ -493,6 +494,8 @@ class LibraryScanner { // Update library item paths for scan existingLibraryItem.path = fullPath existingLibraryItem.relPath = itemDir + renamedPaths.path = fullPath + renamedPaths.relPath = itemDir } } if (existingLibraryItem) { @@ -512,7 +515,7 @@ class LibraryScanner { // Scan library item for updates Logger.debug(`[LibraryScanner] Folder update for relative path "${itemDir}" is in library item "${existingLibraryItem.media.metadata.title}" - scan for updates`) - itemGroupingResults[itemDir] = await LibraryItemScanner.scanLibraryItem(existingLibraryItem.id) + itemGroupingResults[itemDir] = await LibraryItemScanner.scanLibraryItem(existingLibraryItem.id, renamedPaths) continue } else if (library.settings.audiobooksOnly && !fileUpdateGroup[itemDir].some?.(scanUtils.checkFilepathIsAudioFile)) { Logger.debug(`[LibraryScanner] Folder update for relative path "${itemDir}" has no audio files`)