mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-24 12:54:31 +02:00
Update watcher files changed function to use the same grouping function as other scans
This commit is contained in:
parent
5fa0897ad7
commit
344890fb45
3 changed files with 33 additions and 105 deletions
|
@ -131,11 +131,21 @@ async function readTextFile(path) {
|
|||
}
|
||||
module.exports.readTextFile = readTextFile
|
||||
|
||||
/**
|
||||
* @typedef FilePathItem
|
||||
* @property {string} name - file name e.g. "audiofile.m4b"
|
||||
* @property {string} path - fullpath excluding folder e.g. "Author/Book/audiofile.m4b"
|
||||
* @property {string} reldirpath - path excluding file name e.g. "Author/Book"
|
||||
* @property {string} fullpath - full path e.g. "/audiobooks/Author/Book/audiofile.m4b"
|
||||
* @property {string} extension - file extension e.g. ".m4b"
|
||||
* @property {number} deep - depth of file in directory (0 is file in folder root)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get array of files inside dir
|
||||
* @param {string} path
|
||||
* @param {string} [relPathToReplace]
|
||||
* @returns {{name:string, path:string, dirpath:string, reldirpath:string, fullpath:string, extension:string, deep:number}[]}
|
||||
* @returns {FilePathItem[]}
|
||||
*/
|
||||
async function recurseFiles(path, relPathToReplace = null) {
|
||||
path = filePathToPOSIX(path)
|
||||
|
@ -213,7 +223,6 @@ async function recurseFiles(path, relPathToReplace = null) {
|
|||
return {
|
||||
name: item.name,
|
||||
path: item.fullname.replace(relPathToReplace, ''),
|
||||
dirpath: item.path,
|
||||
reldirpath: isInRoot ? '' : item.path.replace(relPathToReplace, ''),
|
||||
fullpath: item.fullname,
|
||||
extension: item.extension,
|
||||
|
@ -228,6 +237,26 @@ async function recurseFiles(path, relPathToReplace = null) {
|
|||
}
|
||||
module.exports.recurseFiles = recurseFiles
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import('../Watcher').PendingFileUpdate} fileUpdate
|
||||
* @returns {FilePathItem}
|
||||
*/
|
||||
module.exports.getFilePathItemFromFileUpdate = (fileUpdate) => {
|
||||
let relPath = fileUpdate.relPath
|
||||
if (relPath.startsWith('/')) relPath = relPath.slice(1)
|
||||
|
||||
const dirname = Path.dirname(relPath)
|
||||
return {
|
||||
name: Path.basename(relPath),
|
||||
path: relPath,
|
||||
reldirpath: dirname === '.' ? '' : dirname,
|
||||
fullpath: fileUpdate.path,
|
||||
extension: Path.extname(relPath),
|
||||
deep: relPath.split('/').length - 1
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Download file from web to local file system
|
||||
* Uses SSRF filter to prevent internal URLs
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue