type
status
date
slug
summary
tags
category
icon
password
学校使用的正方教务系统V8.0,没有成绩更新后自动推送给学生的功能,对于期末考完试想要及时了解自己的成绩同学,隔一段时间就要登陆教务系统,查询十分不方便,本教程使用Python自动化 + Github Action + Pushplus实现自动监测教务系统的成绩,如果有更新则通过Pushplus自动推送到微信上,免去了多次登录教务系统的烦恼!本服务不需要任何服务器,代码知识,5分钟即可完成!
1.效果展示
以1月25日为例
手机上收到的消息是这样的

点进去之后,发现更新的课程名称为“高频电子电路”

显示出了老师提交成绩单的时间为14:06 可以看到14:10成绩更新的消息就推送到手机上了,因为我们代码里设置的时间是每隔5分钟运行一次来检测成绩有无变化,无变化不推送,有变化就发送到微信上
2.准备工作
一个正常的Github账号
Pushplus Token
相信Github账号大家都有,我们需要他用来储存代码库,和定时运行代码
Pushplus Token获取方式如下:
- 微信公众号搜索关注“Pushplus”

2.点击功能-个人中心

3.点击开发设置-Token


4.复制Token,备用

3.克隆代码仓库并设置环境变量
进入链接,右上角Fork


点击之后,创建好,会自动跳转到你自己复制好的仓库
右上角Setting

找到Secret - Action - New Repository Secrets

Name:URL Secrets:http://59.74.174.150/ (XUST教务系统登陆入口)

同样的方法,按照下面表格再添加三个
Name | Secret |
USERNAME | 你的学号 |
PASSWORD | 你的教务系统密码 |
TOKEN | 刚刚在公众号中获取到的TOKEN |
所有数据都是以环境变量,密文形式储存的,没有任何泄露风险
添加完之后是这个样子的

4.开启Github Action定时运行
点击页面上部分的Actions

紧接着点击绿色的丨 understand my wokflows, go ahead and enable them

此时,已经完成了,他已经在工作了,每十分钟自动运行一次,为了测试效果我们手动运行一次,因为是首次运行,不管有没有成绩更新都会推送给你。
5.测试

然后刷新一下页面,一分钟左右,你的微信就收到消息了,点进去就能查看详细的成绩信息

6.问题排查
如果你没有收到信息,那么按照下面步骤查看日志来确定失败的原因



📎 参考文章
- 程序主要部分来自于FarmerChillax/new-school-sdk: 👋 校园教务系统爬虫接口,新版正方教务系统 SDK for Python(新正方教务系统API),自动识别验证码(包含两种验证码的处理) (github.com) 登陆部分,RAS解密,获取成绩等接口
为基础,虽然都是正方系统,但查询接口与原仓库不符,我做了适配本校教务系统的工作,以及接入Pushdeer的工作(如有需要在pushplus.py代码中自己修改),如果有其它学校需要使用,请自行修改代码中的url接口
请勿用于非法用途!
- 作者:Steady298
- 链接:http://blog.steady298.com/article/e27f8f66-f73a-464e-8d45-eff28a7708e3
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。