使用本项目前:
早晨睡醒看一遍教务系统、上厕所看一遍教务系统、刷牙看一遍教务系统、洗脸看一遍教务系统、吃早餐看一遍教务系统、吃午饭看一遍教务系统、睡午觉前看一遍教务系统、午觉醒来看一遍教务系统、出门前看一遍教务系统、吃晚饭看一遍教务系统、洗澡看一遍教务系统、睡觉之前看一遍教务系统
使用本项目后:
教务有通知后自动发通知到微信以节省您宝贵的时间
更新:
在 6月19日
的提交中重构了主体模块的实现。
本项目在由 xwy231321
修改的开源项目 ZFCheckScores
的基础上添加教务系统通知推送而来,本项目将依照 NianBroken
的开源许可证Apache-2.0进行修改与二次开源。
正方教务管理系统 版本 V8.0、V9.0
如果你的教务系统页面与下图所示的页面完全一致或几乎一致,则代表你可以使用本项目。
操作系统: Linux Mint 22.1 Cinnamon
IDE: CLion 2025.1
解释器: Python 3.12
操作系统: Ubuntu 24.04 64位
容器: podman version 4.9.3
-
主要功能
- 每隔三小时自动检测一次教务是否有新通知,若有更新,将通过微信推送及时通知用户。
-
相较于教务系统增加了哪些功能?
- 显示成绩提交时间,即成绩何时被录入教务系统。
- 显示成绩提交人姓名,即成绩由谁录入进教务系统。
- 计算
GPA - 计算百分制
GPA - 对于没有分数仅有级别的成绩,例如”及格、良好、优秀“,可以强制显示数字分数。
- 消息分类推送,分为
成绩推送、消息通知两种。 - 增量更新, 除第一次为全量推送以外,只推送新增的信息。
podman 是一款完全兼容 Docker 的现代化容器,可以直接运行 Docker 项目.
-
对于 Debian/Ubuntu 系列,一般:
sudo apt update sudo apt install -y podman git
-
对于 RHEL/CentOS/Fedora 系列,一般:
sudo dnf install -y podman git
-
确认安装成功:
podman --version
git clone https://github.com/nhirsama/ZFGetMessage然后创建 ven.txt 文件.
nano ven.txt按照下面要求输入必要的信息.
因必要信息是明文存储在服务器中,请保护好个人信息.
PASSWORD=修改为你的密码
# 若你使用其他的推送服务,请修改下面的PUSH_URL
PUSH_URL=https://push.showdoc.com.cn/server/api/push/
TOKEN=修改为你的推送token
URL=修改为你的教务url
# username 为你的教务登陆用户名,一般情况下为学号
USERNAME=修改为你的学号给脚本添加可执行权限,并运行一次.
若前面配置完全正确,此时应该会给你推送两条信息.
若没有收到推送信息,请查看 run.log 日志查找问题.
cd ZFGetMessage
chmod +x ./start.sh
./start-
编辑要运行脚本的用户的 crontab,例如以 root 或特定用户身份:
crontab -e
-
添加:
假设path为脚本所在位置的绝对目录,若不知道可以使用pwd命令查看当前位置0 */3 * * * path/start.sh-
上述在每隔 3 小时的整点(0:00、3:00、6:00…)执行一次。
-
日志已在脚本内重定向,无需在 cron 再加重定向。若希望将 cron 错误输出也记录,可修改为:
0 */3 * * * path/start.sh >> path/cron.log 2>&1 -
可以自行修改 cron 命令以自定义检测间隔时间。例如下面为每天九点整运行此项目。
0 9 * * * path/start.sh >> path/cron.log 2>&1
-
-
-
保存后生效。可通过检查
path/run.log或pathcron.log来确认执行情况。
在控制台中输入下列指令克隆该项目。
git clone https://github.com/nhirsama/ZFGetMessage输入下列指令以创建名为zfgetmessage的容器。
cd ZFGetMessagesudo docker build -t zfgetmessage .输入下列指令,并应将'<>'所引的内容改为正确内容。
sudo docker run -dit -e URL=<你所在大学的教务url> -e USERNAME=<你的学号> -e PASSWORD=<你的密码> -e TOKEN=<你的token> -e PUSH_URL=https://push.showdoc.com.cn/server/api/push/ zfgetmessage注1: sudo命令用于在Ubuntu等Linux发行版中使用管理员权限运行命令,管理员账户则不需要此命令。
注2: docker容器中环境变量信息使用明文存储,因此请确保服务器信息安全!
注:此方法来自原存储库,重构时并未特意编写 GitHub Actions 相关内容,可能完全不可用.
1. Fork 本仓库
Fork → Create fork
Settings → Actions → General → Workflow permissions →Read and write permissions →Save
Settings → Secrets and variables → Actions → Secrets → Repository secrets → New repository secret → Add secret
Name = Name,Secret = 例子
| Name | 例子 | 说明 |
|---|---|---|
| URL | 对应的教务管理系统url | 教务系统地址 |
| USERNAME | 学号 | 教务系统用户名 |
| PASSWORD | 对应的密码 | 教务系统密码 |
| TOKEN | "server/api/push/"后面的内容 | Showdoc 的 token |
Actions → I understand my workflows, go ahead and enable them → CheckScores → Enable workflow
Actions → CheckScores → Run workflow
若你的程序正常运行且未报错,那么在此之后,程序将会每隔 30 分钟自动检测一次成绩是否有更新
若你看不懂上述使用方法,你可以查看详细使用方法
- 读取对应 json 文件中的内容
- 通过 api 获取通知和成绩信息
- 通过关键信息查找新增的通知
- 修改 json 并推送
Copyright © 2025 nhirsama.
Copyright © 2024 NianBroken. All rights reserved.
本项目采用 Apache-2.0 许可证。简而言之,你可以自由使用、修改和分享本项目的代码,但前提是在其衍生作品中必须保留原始许可证和版权信息,并且必须以相同的许可证发布所有修改过的代码。
https://github.com/NianBroken/ZFCheckScores
https://github.com/xwy231321/ZFCheckScores
欢迎提交 Issues 和 Pull requests

