SunnyHaze / SCUCourseSelectHelper

新版SCU教务系统选课小助手V1.0

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

更新日志

2023.3.14 教务处修改了查询余课时返回的接口形式,进行了适配,并更新了学期号

2022.9.27 添加token获取,解决登录问题

2022.6.7 修正命名空间冲突

2021.12.28 更新学期号

2021.09.13 添加选课时间段

2021.06.22 更新学期号,同时增加多选课

2020.12.29 增加验证码识别功能,修改学期号

2020.6.19 新增GPL3.0协议,使用规范见下文使用须知条例

2020.6.12 修复部分错误,增加异常输出,方便排查错误

2020.6.11 修复 2020 年 6 月选课失败的错误

使用须知

  • 本项目只适用于编程学习用途,不得用于实际选课阶段,请在下载后24小时内删除!
  • 不得随意传播本项目至任何公开场合(包括但不限于QQ群、微信群、贴吧论坛等)
  • 因用户使用或修改项目源码而产生的一切责任与本人无关,本人不负任何连带责任
  • 若不同意以上使用条例,请停止clone本项目并不得通过任何途径使用本项目
  • 本项目源码以及条例解释权归本人所有

序言

有学弟来找我说选课很困难,选不到课很难受

作为学长知道之前的选课之痛

所以顺手花了几分钟给学弟写了一个选课脚本

反选课机制

由于你川新版教务系统会对没有进行查询就进行POST选课操作的选课行为进行精准打击

会请你到教务处喝 🍵

因此本脚本每次选课前都会进行课程查询,以及对于选课tokenValue的正则提取

对于剩余课程量大于 0 的课程才会进行选择

从而绕过了反选课机制

错误处理

由于你川的 🥔 服务器,可能会导致选课过程中某一步没有请求到数值而就将数值POST过去

同样会被检测到

所以我在每一步都增加了异常捕捉,如果出现异常就退出当前选课循环,进入新的选课过程中

避免了因服务器的原因而导致被请喝 🍵

Pyhton

本脚本可适用于Python3.6环境下,不支持Python2环境

依赖安装

就三个依赖库就不写requestsments.txt文档了

如果不需要验证码自动识别功能则无需安装muggle_ocr

pip install Pillow
pip install requests
pip install muggle_ocr

目前muggle_ocr已经无法通过官方pip安装,请通过豆瓣源安装 pip install muggle_ocr -i https://pypi.douban.com/simple/

使用方法

每个新学期使用,请务必在config.py文件中修改学期号,即修改selectcourse_xueqi变量!!!格式为"2021-2022-1-1"分为四段,前两段是学年,第三段是学期号,秋季为1,春季为2,最后一段无实际意义,保留为1即可。

配置config.txt文件,然后按要求输入即可

例如:

2077777777777
666666
摸鱼学导论;面向GitHub程序设计
114514;1919810
01 02 03 04 05 06 07 08 09;10
9:30 21:59

课程之间用 ; 隔开,单门课程课序号用 空格 隔开,注意不要有多余的空格,否则可能会导致选课失败。 最后一行是设置选课时间,时间用空格隔开暂时未支持多门课分别的选择时段

注意!请确保你要选的课不是限选!(同时保证信息正确)

注意!请确保你要选的课不是限选!(同时保证信息正确)

注意!请确保你要选的课不是限选!(同时保证信息正确)

否则会选课失败!

配置完毕后

最好在命令行下运行python main.py,会极大减少出现字符编码的错误的情况

比如UnicodeEncodeError: 'ascii' codec can't encode characters in position等错误

他会选择与设置课程号和课序号一致的课程进行选择,从而防止了选错课程

如果选课结果显示ok,但在教务系统没有出现这门课,请稍等片刻刷新即可

出现result:ok是肯定选中课程了的

选课就是这么简单~

最后

有问题可以发issue,我看到后会及时回复

如果您觉得本项目对你有帮助的话,可以给本项目一个star来鼓励一下~

About

新版SCU教务系统选课小助手V1.0

License:GNU General Public License v3.0


Languages

Language:Python 100.0%