Switched from setTimeout to crontab for watch-mode.

This commit is contained in:
DebaucheryLibrarian 2024-09-11 05:16:56 +02:00
parent f989bc9f18
commit 00de0d43f5
4 changed files with 13 additions and 13 deletions

View File

@ -46,8 +46,7 @@ module.exports = {
avoidDuplicates: true,
retries: 3,
watch: {
interval: 30,
ignoreErrors: true,
schedule: '*/30 * * * *',
},
archives: {
search: false,

5
package-lock.json generated
View File

@ -1523,6 +1523,11 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"node-cron": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
},
"node-exiftool": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-exiftool/-/node-exiftool-2.3.0.tgz",

View File

@ -38,6 +38,7 @@
"fs-extra": "^5.0.0",
"js-yaml": "^3.12.0",
"mime-types": "^2.1.18",
"node-cron": "^1.2.1",
"node-exiftool": "^2.3.0",
"node-fetch": "^2.1.2",
"object.omit": "^3.0.0",

View File

@ -4,6 +4,7 @@ const config = require('config');
const Snoowrap = require('snoowrap');
const exiftool = require('node-exiftool');
const exiftoolBin = require('dist-exiftool');
const cron = require('node-cron');
const { format } = require('date-fns');
require('array.prototype.flatten').shim();
@ -40,12 +41,6 @@ function fetchSavePosts(userPosts, ep) {
}
async function initApp() {
function watch() {
console.log(`[${format(new Date(), 'YYYY-MM-DD HH:mm:ss')}] Watch-mode enabled, checking for new posts ${config.fetch.watch.interval} minutes from now.`);
setTimeout(initApp, Math.ceil(config.fetch.watch.interval) * 1000 * 60);
}
const usersProvided = args.users && args.users.length;
const postIdsProvided = args.posts && args.posts.length;
@ -62,17 +57,17 @@ async function initApp() {
await ep.close();
if (args.watch) {
watch();
console.log(`[${format(new Date(), 'YYYY-MM-DD HH:mm:ss')}] Watch-mode enabled, checking again for new posts according to crontab '${config.fetch.watch.schedule}'.`);
}
} catch (error) {
console.error(error);
if (args.watch && config.fetch.watch.ignoreErrors) {
watch();
}
}
return true;
}
initApp();
if (args.watch) {
cron.schedule(config.fetch.watch.schedule, initApp);
}