filesite
1 year ago
5 changed files with 120 additions and 1 deletions
@ -0,0 +1,10 @@ |
|||||||
|
//公用方法
|
||||||
|
export default { |
||||||
|
|
||||||
|
getTimeString: function(locales) { |
||||||
|
const today = new Date(); |
||||||
|
if (typeof(locales) == 'undefined') {locales = 'zh-CN';} |
||||||
|
return today.toLocaleString(locales); |
||||||
|
}, |
||||||
|
|
||||||
|
}; |
@ -0,0 +1,18 @@ |
|||||||
|
/** |
||||||
|
* 基于Bot跟Machete的TaJian对接 |
||||||
|
* 按filestie.io标准把Bot爬虫返回的数据格式化保存为.url及其说明文件 |
||||||
|
*/ |
||||||
|
|
||||||
|
class TaJian { |
||||||
|
|
||||||
|
constructor(data_save_dir) { |
||||||
|
this.save_dir = data_save_dir; |
||||||
|
} |
||||||
|
|
||||||
|
async saveUrlShortcut(data) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default TaJian; |
@ -0,0 +1,66 @@ |
|||||||
|
/** |
||||||
|
* 对爬虫任务列表目录进行监控 |
||||||
|
* 发现新任务 |
||||||
|
* 删除已完成的任务文件 |
||||||
|
* 内存中保存所有任务,及其状态 |
||||||
|
* 返回当前任务状态 |
||||||
|
*/ |
||||||
|
import common from './common.mjs'; |
||||||
|
import fs from 'node:fs'; |
||||||
|
import path from 'node:path'; |
||||||
|
import cron from 'node-cron'; |
||||||
|
|
||||||
|
class TaskMoniter { |
||||||
|
|
||||||
|
constructor(task_list_dir) { |
||||||
|
this.check_time_gap = 10; //检测间隔时间,单位:秒
|
||||||
|
this.task_dir = task_list_dir; //监控目录:任务列表保存目录
|
||||||
|
this.tasks = {}; //内存中的任务列表
|
||||||
|
this.taskStatus = { //当前任务状态
|
||||||
|
total: 0, //总任务数
|
||||||
|
waiting: 0, //等待执行的任务数
|
||||||
|
running: 0, //正在执行的任务数
|
||||||
|
done: 0, //已完成的任务数
|
||||||
|
failed: 0 //执行失败的任务数
|
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
async getStatus() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
async getNewTask() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
async setTaskDone(task) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
async setTaskFailed(task) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
async checkTasks() { |
||||||
|
} |
||||||
|
|
||||||
|
run() { //开始监控任务目录,把所有任务缓存到内存
|
||||||
|
console.log('[%s] TaskMoniter started.', common.getTimeString()); |
||||||
|
|
||||||
|
//auto run
|
||||||
|
const task_check_time = this.check_time_gap; |
||||||
|
const task_auto_run = cron.schedule(`*/${task_check_time} * * * * *`, () => { |
||||||
|
console.log('[%s] TaskMoniter auto check...', common.getTimeString()); |
||||||
|
|
||||||
|
}, { |
||||||
|
scheduled: false |
||||||
|
}); |
||||||
|
|
||||||
|
task_auto_run.start(); |
||||||
|
console.log('[%s] TaskMoniter auto check started.', common.getTimeString()); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default TaskMoniter; |
@ -0,0 +1,24 @@ |
|||||||
|
/** |
||||||
|
* 爬虫主程序 |
||||||
|
* 负责监听任务目录里的新任务,并自动抓取数据保存到数据目录。 |
||||||
|
*/ |
||||||
|
import configs from './config.mjs'; |
||||||
|
import TaskMoniter from "./lib/taskMoniter.mjs"; |
||||||
|
import TaJian from "./lib/tajian.mjs"; |
||||||
|
|
||||||
|
import Douyin from './bot/Douyin.mjs'; |
||||||
|
import Kuaishou from './bot/Kuaishou.mjs'; |
||||||
|
import Xigua from './bot/Xigua.mjs'; |
||||||
|
import Bilibili from './bot/Bilibili.mjs'; |
||||||
|
|
||||||
|
(async () => { |
||||||
|
|
||||||
|
const taskMoniter = new TaskMoniter(configs.task_list_dir); |
||||||
|
const tajian = new TaJian(configs.data_save_dir); |
||||||
|
|
||||||
|
taskMoniter.run(); |
||||||
|
|
||||||
|
})().catch(error => { |
||||||
|
console.error("Spider error got:\n%s", error); |
||||||
|
process.exit(1); |
||||||
|
}); |
Loading…
Reference in new issue