Add api to update all metadata files

This commit is contained in:
Cutch 2025-11-24 22:48:12 -05:00
parent 6ac0a8a678
commit 736a939284
2 changed files with 22 additions and 0 deletions

View file

@ -150,6 +150,27 @@ class ToolsController {
res.sendStatus(200) res.sendStatus(200)
} }
/**
* POST: /api/tools/batch/update-metadata-files
* Start batch request to update all metadata files
*
* @this import('../routers/ApiRouter')
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async updateAllItemMetadata(req, res) {
if (!req.user.isAdminOrUp) {
Logger.warn(`Non-admin user "${req.user.username}" other than admin attempted to batch scan library items`)
return res.sendStatus(403)
}
const libraryItems = await Database.libraryItemModel.findAll()
for (const libraryItem of libraryItems) await libraryItem.saveMetadataFile()
res.sendStatus(200)
}
/** /**
* *
* @param {RequestWithUser} req * @param {RequestWithUser} req

View file

@ -298,6 +298,7 @@ class ApiRouter {
this.router.delete('/tools/item/:id/encode-m4b', ToolsController.middleware.bind(this), ToolsController.cancelM4bEncode.bind(this)) this.router.delete('/tools/item/:id/encode-m4b', ToolsController.middleware.bind(this), ToolsController.cancelM4bEncode.bind(this))
this.router.post('/tools/item/:id/embed-metadata', ToolsController.middleware.bind(this), ToolsController.embedAudioFileMetadata.bind(this)) this.router.post('/tools/item/:id/embed-metadata', ToolsController.middleware.bind(this), ToolsController.embedAudioFileMetadata.bind(this))
this.router.post('/tools/batch/embed-metadata', ToolsController.middleware.bind(this), ToolsController.batchEmbedMetadata.bind(this)) this.router.post('/tools/batch/embed-metadata', ToolsController.middleware.bind(this), ToolsController.batchEmbedMetadata.bind(this))
this.router.post('/tools/batch/update-metadata-files', ToolsController.middleware.bind(this), ToolsController.updateAllItemMetadata.bind(this))
// //
// RSS Feed Routes (Admin and up) // RSS Feed Routes (Admin and up)