bnu-auto-ncov-daily-report
所属分类:微信小程序
开发工具:JavaScript
文件大小:0KB
下载次数:0
上传日期:2022-05-19 06:09:19
上 传 者:
sh-1993
说明: 某校 每日上报打卡助手,支持使用 Github Actions 定时任务在线自动打卡,且支持打卡后用 微 信 消息、电子邮件通知打卡结果。
(A school reports the clocking assistant every day, which supports online automatic clocking using Github Actions scheduled task, and supports WeChat message and email notification of clocking results after clocking.)
文件列表:
.eslintrc.json (209, 2022-05-18)
.prettierrc.json (87, 2022-05-18)
LICENSE (11357, 2022-05-18)
app.js (273, 2022-05-18)
config.sample.json (445, 2022-05-18)
env.js (1167, 2022-05-18)
mail-template.json (310, 2022-05-18)
package.json (954, 2022-05-18)
pnpm-lock.yaml (40227, 2022-05-18)
src/ (0, 2022-05-18)
src/bootstrap.js (1817, 2022-05-18)
src/commander.js (1090, 2022-05-18)
src/configure.js (4671, 2022-05-18)
src/handler.js (2194, 2022-05-18)
src/logger.js (1802, 2022-05-18)
src/mailer.js (942, 2022-05-18)
src/procedure.js (2536, 2022-05-18)
src/util.js (7223, 2022-05-18)
src/wechat.js (1332, 2022-05-18)
wechat-template.json (269, 2022-05-18)
# 某校 每日上报打卡助手
本程序可以自动完成 某校 的疫情防控每日健康状况上报打卡。只要之前至少打卡过一次,即可自动读取上一次打卡的数据完成打卡(地点为上一次打卡的地点)。
支持三种使用方式:
1. Fork 本仓库后,配置好新仓库的 Secrets 作为输入参数,通过 Github Actions 直接在线使用。**(推荐)**
2. 部署在服务器上运行,可以通过命令行参数或配置文件两种方式输入参数,通过任意方式创建计划任务即可。
3. 在本地电脑上运行,可以通过命令行参数或配置文件两种方式输入参数,通过任意方式创建计划任务即可。**(不推荐)**
程序运行后,支持通过微信消息、电子邮件两种方式通知用户打卡结果。如果打卡失败,还支持读取打卡页面上的弹窗提示通知用户。
**声明:本程序仅供学习 Web 技术知识,交流计算机研究心得使用,如有身体不适、位置移动、接触患者等意外情况,请务必如实手动打卡。此外,本程序为开放源代码的程序,使用前请自行阅读、审查代码,确认无风险后再谨慎使用,代码上传者无法保证该程序始终能够正常使用,并对因此可能造成的潜在损失不予负责。**
## 使用说明
### Github Actions(推荐)
#### 基础教程
1. Fork 本仓库。
2. 进入仓库的 Settings 页面,在左侧的菜单中选择 Secrets,点击「New repository secret」按钮,新建下面这些 Secrets(冒号前的是 Secret Name,冒号后的是要填的内容):
- **USERNAME**: 填写学号(**必须设置**)
- **PASSWORD**: 填写统一身份认证平台密码(**必须设置**)
- **WECHAT**: 是否开启微信通知功能,`true` 为开启,`false` 为不开启(**如果不开启,可以直接不设置。如果要开启,此网页往下滚动有配置这 2 个参数的教程**)
- **WECHAT_SENDKEY**: 「Server酱」微信消息推送服务的 SendKey(只在开启微信通知功能时需要设置)
- **MAIL**: 是否开启邮件通知功能,`true` 为开启,`false` 为不开启(**如果不开启,可以直接不设置。如果要开启,此网页往下滚动有配置这 7 个参数的教程**)
- **MAIL_HOST**: SMTP 服务器(只在开启邮件通知功能时需要设置)
- **MAIL_PORT**: SMTP 服务器端口,填数字(只在开启邮件通知功能时需要设置)
- **MAIL_SECURE**: SMTP 服务器端口是否加密,`true` 为加密,`false` 为不加密(只在开启邮件通知功能时需要设置)
- **MAIL_USER**: SMTP 服务器登录用户名(只在开启邮件通知功能时需要设置)
- **MAIL_PASS**: SMTP 服务器登录密码(只在开启邮件通知功能时需要设置)
- **MAIL_TO**: 邮件通知的收件人邮箱(只在开启邮件通知功能时需要设置)
3. 进入仓库的 Actions 界面,开启 Workflows,然后选择 `Report Bot` workflow,enable workflow
配置好 Secrets 并启用 workflow 后,推荐先手动运行一次该 workflow,看看运行是否正常,能不能收到通知等。(如下图)
![image](https://user-images.githubusercontent.com/6050869/130862690-66862b5f-8bf8-4568-b907-34431f6eabae.png)
如果配置成功的话,该 workflow 就会在北京时间每天 00:05 自动执行,完成打卡了(Github Actions 可能有最长 15 分钟左右的延迟,最晚会在 00:20 左右自动执行)。
注:邮件通知功能与微信通知功能可以同时开启,也可以只开启其中一个,也可以都不开启。
#### 自定义打卡时间
如果希望在其他时间打卡,可以在 `.github/workflows/bot.yml` 中,修改 `cron` 为你需要的时间。
#### 开启微信通知功能
本程序的微信通知功能依赖于「Server酱」微信消息推送服务。如果希望使用,需要前往「Server酱」网站([https://sct.ftqq.com/](https://sct.ftqq.com/))注册一个账号,并获取 `SendKey`。
第一步,进入「Server酱」网站,点击右上角「登入」,然后使用微信扫码,将自动注册账号并登录。
![image](https://user-images.githubusercontent.com/6050869/130860816-2e2842d2-72c9-4a1c-a88e-d5296e27bd76.png)
第二步,在 SendKey 页面中,点击「复制」按钮,复制 `SendKey`。
![image](https://user-images.githubusercontent.com/6050869/130861195-76abfc41-4131-4a15-bc25-79cdfcfa2fd7.png)
也可以先点击那个闭着的眼睛按钮,显示 `SendKey`,之后手动复制。
![image](https://user-images.githubusercontent.com/6050869/130861541-8e5b9831-2337-4ee4-a5cf-62659d4afcb4.png)
然后,在设置好 `USERNAME` 与 `PASSWORD` 之后,额外设置下列 Secrets:
- **WECHAT**: true
- **WECHAT_SENDKEY**: 把刚才复制的「Server酱」微信消息推送服务的 SendKey 粘贴到这里
设置好后,应该一共有如下图所示的 4 个 Secrets:
![image](https://user-images.githubusercontent.com/6050869/130994136-5439832e-e476-405b-8fcd-2ae82cc7a2d0.png)
配置好微信通知后,每天打卡完毕将自动发送通知消息到你的微信(如下图)。
![image](https://user-images.githubusercontent.com/6050869/169222042-cc2b4307-0ba1-4234-ae10-4b0343692a73.png)
#### 开启邮件通知功能(以 QQ 邮箱为例)
国内最常见的邮箱服务是 QQ 邮箱,下面以 QQ 邮箱为例,说明如何配置邮件通知。
第一步,进入 QQ 邮箱,点「设置」,切换到「账户」选项卡(如下图)。
![image](https://user-images.githubusercontent.com/6050869/130831671-ca586492-064e-42b9-8daa-8edf6f8f23a6.png)
第二步,滚动页面到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」一节,确认 SMTP 服务已开启,如果没有开启,手动打开。
![image](https://user-images.githubusercontent.com/6050869/130831106-10e4f104-8b83-4429-8db2-64264cef793e.png)
第三步,点击「生成授权码」,生成登录 SMTP 服务器所需的独立密码。
![image](https://user-images.githubusercontent.com/6050869/130831217-e6978a23-e6af-4825-8269-1e0e308a145a.png)
然后,在设置好 `USERNAME` 与 `PASSWORD` 之后,额外设置下列 Secrets:
- **MAIL**: true
- **MAIL_HOST**: smtp.qq.com
- **MAIL_PORT**: 465
- **MAIL_SECURE**: true
- **MAIL_USER**: QQ 邮箱的完整邮件地址
- **MAIL_PASS**: 在第三步中生成的授权码
- **MAIL_TO**: 你需要接收通知的邮箱,可以继续填自己的 QQ 邮箱
设置好后,Secrets 界面应该如下图所示:
![image](https://user-images.githubusercontent.com/6050869/169221884-77706629-1387-406f-945c-aec76b67fd9e.png)
配置好邮件通知后,每天打卡完毕将自动发送邮件到你的邮箱(如下图)。
![image](https://user-images.githubusercontent.com/6050869/169222333-eddf8e48-6db7-4525-874d-6ae45e30df49.png)
### 个人服务器部署
#### 依赖安装
> 在安装依赖前,首先确保 `Node.js` 版本不低于 `12`。
推荐使用 `pnpm` 作为包管理器完成依赖安装,执行 `pnpm install` 即可。
如果包管理器使用 `npm` 也可以,执行 `npm install` 即可。
如果包管理器使用 `yarn` 也可以,执行 `yarn install` 即可。
#### 配置参数
首先,保证之前至少已经完成过一次手动打卡。
如果使用配置文件方式输入参数,则需要:
1. 将 `config.sample.json` 复制一份并命名为 `config.json`。
2. 填写 `config.json` 的属性 `username` 和 `password`。如果需要如果需要开启邮件通知、微信通知等功能,则还需按照「配置文件说明」一节填写 `mail`、`wechat` 等属性。
3. 在服务器上用任意方式创建定时任务,用 `node` 执行 `app.js`。
如果使用命令行方式输入参数,则需要:
- 在服务器上用任意方式创建定时任务,用 `node` 执行 `app.js`,并按照「命令行参数说明」一节填写调用参数。
配置文件与命令行参数可以混用,如果出现参数同名情况,命令行输入的参数优先级更高。
#### 命令行参数说明
```bash
Usage: node app [options]
Options:
-V, --version output the version number
-u, --username
学号
-p, --password 统一身份认证平台密码
-m, --mail 是否开启邮件通知功能
-h, --mail_host SMTP 服务器
-o, --mail_port SMTP 服务器端口
-s, --mail_secure SMTP 服务器端口是否加密
-U, --mail_user SMTP 服务器登录用户名
-P, --mail_pass SMTP 服务器登录密码
-t, --mail_to 邮件通知的收件人邮箱
-w, --wechat 是否开启微信通知功能(依赖「Server酱」微信消息推送服务)
-k, --wechat_sendkey 「Server酱」微信消息推送服务的 SendKey
--help display help for command
```
其中,`--mail` 参数默认为 `false`,如果不需要开启邮件通知功能,不使用该参数即可,如:
```bash
node app -u 学号 -p 统一身份认证平台密码
```
如果需要开启邮件通知功能,需要设置 SMTP 服务器与邮件模板信息,以前文提到的 QQ 邮箱为例,调用示例如下:
```bash
node app -u 学号 -p 统一身份认证平台密码 -m true -h smtp.qq.com -o 465 -s true -U QQ邮箱 -P QQ邮箱授权码 -t 邮件通知的收件人邮箱
```
如果需要开启微信通知功能,由于本程序的微信通知功能依赖于[「Server酱」微信消息推送服务](https://sct.ftqq.com/),需要首先去[「Server酱」微信消息推送服务](https://sct.ftqq.com/)的网站注册一个账号,注册后获取 `SendKey`。调用示例如下:
```bash
node app -u 学号 -p 统一身份认证平台密码 -w true -k 「Server酱」的SendKey
```
邮件通知功能和微信通知功能可以同时开启,调用示例如下:
```bash
node app -u 学号 -p 统一身份认证平台密码 -m true -h smtp.qq.com -o 465 -s true -U QQ邮箱 -P QQ邮箱授权码 -t 邮件通知的收件人邮箱 -w true -k 「Server酱」的SendKey
```
#### 配置文件说明
##### username (必填)
填入学号。
##### password (必填)
填入统一身份认证平台密码。
##### mail (非必填)
如果不需要开启邮件通知功能,保持 `mail` 属性为 `false` 即可。
如果需要开启邮件通知功能,除了将 `mail` 设置为 `true`,还需要设置 SMTP 服务器与收件邮箱信息。示例如下:
```json
{
"username": "填入学号",
"password": "填入统一身份认证平台密码",
"mail": true,
"mail_host": "SMTP 服务器",
"mail_port": SMTP 服务器端口,填数字,
"mail_secure": SMTP 服务器端口是否加密,true 为加密,false 为不加密,
"mail_user": "SMTP 服务器登录用户名",
"mail_pass": "SMTP 服务器登录密码",
"mail_to": "邮件通知的收件人邮箱",
"wechat": "是否开启微信通知功能(依赖「Server酱」微信消息推送服务)",
"wechat_sendkay": "「Server酱」微信消息推送服务的 SendKey"
}
```
##### wechat (非必填)
如果不需要开启微信通知功能,保持 `wechat` 属性为 `false` 即可。
如果需要开启微信通知功能,除了将 `wechat` 设置为 `true`,还需要设置「Server酱」微信消息推送服务的 SendKey。示例如下:
```json
{
"username": "填入学号",
"password": "填入统一身份认证平台密码",
"wechat": true,
"wechat_sendkay": "「Server酱」微信消息推送服务的 SendKey"
}
```
注:邮件通知功能与微信通知功能可以同时开启,也可以只开启其中一个,也可以都不开启。
近期下载者:
相关文件:
收藏者: