/AutoDailyReport-For-USTC

USTC 自动每日打卡/自动跨校区报备/自动生成***

Primary LanguagePythonMIT LicenseMIT

USTC健康打卡平台自动打卡脚本

Auto-report action Language GitHub stars GitHub forks

说明

本打卡脚本仅供学习交流使用,请勿过分依赖。开发者对使用或不使用本脚本造成的问题不负任何责任,不对脚本执行效果做出任何担保,原则上不提供任何形式的技术支持。

本仓库基于原版,参考修改版并进行修改,增加对出校申请和跨校区报备的支持。目前正持续更新以尽量使得每一天都可以自动打卡,愿完全放开的日子早日到来。

更新记录

  • 20220407: 本人基于之前的脚本,并进行修改以适应现在的打卡版本
  • 20220408: 在SECRET中增加是否执行操作的选项,以适应更多需求
  • 20220421: 增加每日上传两码功能
  • 20220506: 恭喜解封,源代码可用,但增加每日出校报备
  • 20220509: 解决打卡系统post链接被修改,上传两码需要GID的问题
  • 20220510: 解决上传两码需要sign的问题
  • 20220513: 恭喜自动授权安康码,不再需要自动上传安康码
  • 20220706: 增加对于不在校等状态的支持,可能有bug
  • 20220729: 修改了行程卡生成方式为截图拼贴,修改了登录部分代码绕开验证码

使用方法

  1. 写在前面:请在自己fork的仓库中修改,并push到自己的仓库,不要直接修改本仓库,也不要将您的修改pull request到本仓库(对本仓库的改进除外)!如果尚不了解github的基本使用方法,请参阅使用议题和拉取请求进行协作/使用复刻使用议题和拉取请求进行协作/通过拉取请求提议工作更改

  2. 将本代码仓库fork到自己的github,并授权打卡系统从权威机构获取安康码信息。

  3. 修改上报信息:在runme.py里直接修改三个data即可

  4. 上传自己的行程卡:行程卡没法自动从微信小程序获取,因为需要手机验证。所以在这里实际上是利用截图伪造新日期的行程卡。从微信小程序的行程卡截图,存在目录下,建议把名字改为xcko.jpg。由于字体的缘故,截图必须从微信小程序!!

  5. travelcard.py是用来生成行程卡的脚本。是通过拼贴数码的图片实现的。在travelcard.py里修改left,upper,right,down为截图中日期、时间部分的左上右下的位置。sour:行程卡截图的文件名,默认是xcko.jpg。dest:新生成的行程卡的文件名,默认是xck.jpg

  6. 主程序是runme.py。

程序的逻辑是首先登录健康平台,如果登录失败会直接退出。

然后按照选项去执行任务。

在做跨校区报备或出校报备之前,会先判断是否在校,如果不在校就不会进行。

  1. yml:在schedule cron部分设定执行任务的周期.在最下面写你要执行的任务

  2. 将修改好的代码提交到自己的仓库。

  3. 点击Actions选项卡,点击I understand my workflows, go ahead and enable them.

  4. 点击Settings选项卡,点击左侧Secrets,点击New secret,创建名为STUID,值为自己学号的secret。用同样方法,创建名为PASSWORD,值为自己统一身份认证密码的secret。以上数据不会被公开。

    secrets

  5. 默认的打卡时间是每天的上午10:00。如需选择其它时间,可以修改.github/workflows/report.yml中的cron,详细说明参见安排的事件,请注意这里使用的是国际标准时间UTC,北京时间的数值比它大8个小时。建议修改默认时间,避开打卡高峰期以提高成功率。

  6. 在Actions选项卡可以确认打卡情况。

  7. 在Github个人设置页面的Notifications下可以设置Github Actions的通知,建议打开Email通知,并勾选"Send notifications for failed workflows only"。请及时查看邮件,如果失败会进行通知。

  8. 如果觉得这个仓库对你有用的话,给个星星✨吧~

在本地运行测试

要在本地运行测试,需要安装python 3。我们假设您已经安装了python 3和pip 3,并已将其路径添加到环境变量。

安装依赖

pip install -r requirements.txt

运行打卡程序

如果在本地进行测试,请执行:

python runme.py [STUID] [PASSWORD]

其中,[STUID]是学号,[PASSWORD]是统一身份认证的密码明文.

后面可以加上选项:

-r 上报健康信息 默认开,要关闭请加 -r n

-u 更新行程卡 默认开,要关闭请加 -u n

-c 跨校区报备 默认关,要开启请加 -c 或-c y

-o 出校报备 默认关,要开启请加 -o 或-o y

如:不更新行程卡,进行跨校区报备

python runme.py PB19890604 xjsdfjk -c -u n