first commit
This commit is contained in:
68
src/index.ts
Normal file
68
src/index.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import puppeteer from 'puppeteer-core';
|
||||
import config from "./config";
|
||||
import db from "./db/index";
|
||||
import mailer from "./utils/mailer";
|
||||
import schedule from 'node-schedule';
|
||||
|
||||
// 把你的逻辑封装成函数
|
||||
async function startTask() {
|
||||
console.log('');
|
||||
console.log('====================================');
|
||||
console.log('⏰ 定时任务开始执行:', new Date().toLocaleString());
|
||||
console.log('====================================');
|
||||
console.log('');
|
||||
|
||||
try {
|
||||
// 1. 启动无头浏览器
|
||||
const browser = await puppeteer.launch(config.launchConfig);
|
||||
const page = await browser.newPage();
|
||||
await page.setExtraHTTPHeaders(config.httpHeaders);
|
||||
|
||||
// 访问页面
|
||||
await page.goto(config.page, {
|
||||
waitUntil: 'networkidle2',
|
||||
timeout: <number>config.pageTimeOut
|
||||
});
|
||||
|
||||
await page.setViewport({ width: 1080, height: 1024 });
|
||||
|
||||
// 抓取数量
|
||||
const number = await page.$eval(
|
||||
'#semiTabpost h2 span:last-child',
|
||||
el => el.textContent.trim()
|
||||
);
|
||||
console.log('1 抓取到主播最新作品数:', number);
|
||||
|
||||
// 获取旧值
|
||||
const { count } = await db.get();
|
||||
console.log('2 数据库里的旧值:', count);
|
||||
|
||||
// 判断是否更新
|
||||
if (String(count) !== String(number)) {
|
||||
console.log('✅ 主播更新作品了');
|
||||
await mailer.send();
|
||||
await db.set({
|
||||
count: number,
|
||||
time: new Date().toLocaleString()
|
||||
});
|
||||
console.log('✅ 已更新到数据库');
|
||||
} else {
|
||||
console.log('❌ 主播没有更新作品');
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
console.log('✅ 本次任务执行完成\n');
|
||||
|
||||
} catch (err) {
|
||||
console.error('❌ 任务执行出错:', err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
console.log('✅ 程序已启动,执行任务,定时规则:', config.cron);
|
||||
|
||||
schedule.scheduleJob(config.cron, async () => {
|
||||
await startTask();
|
||||
});
|
||||
|
||||
// startTask()
|
||||
Reference in New Issue
Block a user