const schedule = require('node-schedule'); const { spawn } = require('child_process'); const { ipc } = require('./config.server.js'); const path = require('node:path') require('./thirdparty/naturalSort.js'); require('./src/settings.js'); require('./src/db.js'); require('./src/dao.js'); require('./src/crawler.js'); const app = require('./config.server.js').app const ipb = require('./config.server.js').ipb let crawlState = 'off'; let crawlFn = async () => { ipb('global:refresh:force') } ipc.on("global:refresh:done", () => { try { let getProcess = spawn("bash", ["get.sh"], {cwd: path.join(__dirname, 'tmp')}) getProcess.stdout.pipe(process.stdout) getProcess.stderr.pipe(process.stderr) getProcess.on('close', (code) => { console.log(`child process exited with code ${code}`); if(code == 0){ } }); } catch (e) { console.error("erron on refresh handle", e) } finally { crawlState = 'off' } }) let crawlFnSafe = async () => { try { crawlState = 'on' await crawlFn() } catch (e) { console.error("error on job", e) } } schedule.scheduleJob('50 23 * * *', () => { if(crawlState === 'off'){ return new Promise(async () => await crawlFnSafe()) } else { console.log("job already running") } }); schedule.scheduleJob('*/30 * * * *', () => { console.log(`service is alive ${new Date()}`) })