Skip to content

donething/tasks-js

Repository files navigation

tasks-js

定时任务脚本。适用于 nodejs + 青龙

emoji 表情的通知相关意思

  • 😊 成功
  • 😂 已做过
  • 😪 没有
  • 😴 结束
  • 🤨 信息
  • 😢 警告
  • 😱 错误

拉取说明

拉取命令:

ql repo https://github.com/donething/tasks-js.git "dist/task_" "" "dist/utils/"

因为拉取后会改变任务和依赖脚本的相对路径,需要在面板拉取后执行的命令输入框中,增加命令:

rm -rf /ql/data/scripts/donething_tasks-js/utils && mv /ql/data/scripts/donething_tasks-js/dist/utils  /ql/data/scripts/donething_tasks-js/

配置

推送消息

  • 企业微信推送:环境变量中添加键QYWX_KEY,值为"id,secret,touser,agentid",以英文逗号分隔
  • TG 消息推送:环境变量中添加键TG_KEY,值的格式:
    // TG 的 Token、频道 ID
    interface Token {
      token: string
      chatID: string
    }
    // TGKeys
    interface TGKeys {
      // 标准通知
      main: Token,
      // 新帖的通知
      signBot: Token,
      // 签到的通知
      freshPost: Token
    }

编写新脚本

编写

脚本路径和文件名

因为青龙总是将任务脚本拉取到根目录,而本地依赖脚本相对路径不变。所以为了避免引用报错,任务脚本需要放在根目录

任务脚本文件名需要前缀task_,以便青龙获取

本地依赖脚本放在/utils目录中

持久存储数据

BACKUPS(./backups)拼接路径,可以将创建的文件存储到宿主机中,以便备份

const dbPath = BACKUPS + "notify_ckecker.json"

cron

设置脚本的名称cron

cron 后的英文冒号":"不能省略,否则会无法识别

// new Env('脚本名称测试');
// cron: 51 5 * * *

console.log("测试!")

测试

使用TypeScript编写的脚本,可以通过ts-node直接执行

ts-node .\tasks\discfan.ts

编译、提交

为减少总执行时长,需编译为JavaScript后,推送

执行编译 tsc,生成目录dist

通过 Git 提交

无头浏览器 puppeteer

青龙容器使用的是apline系统,可以先在控制面板中,安装Linux依赖chromium。将自动在容器中执行apk add --no-cache chromium

然后,在脚本中只使用puppeteer-core,指定启动路径参数executablePath

参考:How to install chromium in alpine docker to use html.render() from requests_html?

每日任务的原则

具体任务可直接抛出错误

如登录功能,各步骤没有满足都可以抛出错误

某个任务执行完后可以返回Result<T>,以供调用出打印信息

然后在调用时用Promise.allSettled执行,如在一个文件task_daily.ts中调用所有每日任务,用 for遍历结果,推送消息

打印日志、抛出错误

步骤函数(登录、回帖等),可使用console.log打印详细原因, 也要返回概括值或抛出概括错误

仅当必要步骤(如“登录”)出错时,直接throw抛出错误,其它不必要抛出错误,可返回false

可以参考 ./utils/spider/hostloc/award.ts

调用

startTask中执行步骤时,可以用try捕获其中的必要步骤,在catch中打印日志和推送错误消息等

About

定时任务脚本,适用于 nodejs +青龙

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors