lhish改,添加了邮件实时提醒功能
添加了ubuntu下自动重新连接wifi和vpn的功能
将整个代码修改得更加难以报错而终止运行,而是多次进行尝试
调整了一些小地方
由于原本是在1.3.1版本上进行的修改,而这边是直接我看了看进行合并的因此可能出现错误,请注意一下,可能需要自行调整,todo:标注了需要手动更改的地方,只要搜索todo出现的地方进行更改即可。
有什么问题或建议可以在issue中提出
由于本人绩点并不算低,用到的时间不多,并且这个代码是基于别人的更改的,因此维护上并不会很勤奋
本项目可以实现在 SHU 选课系统中自动刷新页面,若在选课时间且目标课程有空余会自动选课。
若未到选课或目标课程暂无空余,程序能够定时刷新信息,一旦选课开始/有人退课(课程容量空余)将会自动尝试选课
若目标课程与当前已选课程冲突,可以设置使程序自动退掉指定的课并选择目标课程
版本1.3.3 (2023.10.14)
- 小规模代码重构
- 改进了由于在别处登录导致跨校区检测误报的情况
版本1.3.2 (2023.2.13)
-
支持配置文件注释。可以使用
#
进行注释,且在运行脚本后仍然保留;使用;
可以进行临时注释,运行脚本后消失。 -
修复配置文件中存在中文(注释)无法被解析的情况
-
判断
已选过该课程且成绩合格
情况
版本1.3.1 (2022.2.19)
该版本需要新依赖tenacity,请在运行脚本前先使用pip安装
-
现在程序会对失败的网络请求进行重试
-
小幅改善
注意:由于选课系统现在退课后不能立即选回,本脚本高级模式的保护功能失效
版本 1.3 (2022.1.8)
- 程序逻辑修复与改进
- 对于常见的错误进行人性化提示
- 增加日志记录功能和相关设置(可能需要更新配置文件以更改配置)
版本 1.2.1 (2022.1.4)
- 修复解析查询结果
本项目适用于 Windows,Linux 与 MacOS,需要安装 Python3 环境
首先先将本项目 clone 到本地/下载压缩包并解压
然后打开一个命令提示符/shell 并切换路径到该文件夹
python -m pip install -r requirements.txt
若不进行任何配置或缺失部分配置,在运行程序时会提示您输入相关必要信息
使用文本编辑器打开目录中的courses.txt
,所有的参数作用见下表
模块 | 变量 | 说明 |
---|---|---|
[Userinfo] | user | 用户名 |
[Userinfo] | password | 密码 |
[Userinfo] | encryptpassword | 加密的密码 |
[Settings] | term | 选课学期代码 |
[Settings] | querydelay | 更新课程信息延时 (秒) |
[Settings] | checkselectdelay | 查询选课开始延时 (秒) |
[Settings] | warndiffcampus | 是否提示选课跨校区 (非 0: 是, 0: 否) |
[Settings] | autoclearscreen | 是否在每次刷新课程信息时清屏 (非 0: 是, 0: 否) |
[Settings] | keeplogs | 是否记录程序运行日志 (非 0: 是, 0: 否) |
[Settings] | loglevel | 整数 小于该值对应的日志级别的日志将会被忽略 |
[Courses] | course1 | 课程信息:课程号,教师号 或 课程号,教师号,待替换课程号,待替换教师号 |
[Courses] | course2 | 同上 |
... |
日志级别在下表中列出
级别 | 值 |
---|---|
CRITICAL (严重) |
5 |
ERROR (错误) |
4 |
WARNING (警告) |
3 |
INFO (信息) |
2 |
DEBUG (调试) |
1 |
若选择开启日志记录功能,默认和推荐的日志级别是 INFO
(信息)
-
程序读入课程信息可以支持两种模式
-
普通模式:
课程号,教师号
示例:
00874008,1001
表示程序将自动尝试选择课程号为
00874008
,教师号为1001
的课程 -
高级模式:
课程号,教师号,待替换课程号,待替换教师号
示例:
00874008,1001,00874008,1002
表示当前已经选择了课程号为
00874008
,教师号为1002
的课程,但希望换成课程号为
00874008
,教师号为1001
的课程
-
-
待选课程必须在选课系统中存在,不重复,否则程序将报错
-
在第 2 种模式下,当待选课程可被选择时,程序将自动退选待替换的课程,再选择目标课程,同时尝试选回待替换的课程以防在退课间隙目标课程选满
-
然而此时仍可能有很小几率这两门课程同时选课失败从而掉课,请自行衡量风险后选择使用
-
课程信息项由
course
+数字构成,如有需要可以在默认配置文件之上继续添加course10=
,course11=
...等项
- 所有配置都在"="后填写,不能换行
- 建议仅储存加密的密码以防泄露明文密码
- 若
encryptpassword
不为空时,程序会忽略password
的值 - 程序会忽略格式不正确的配置
- 在进行新学期选课时,可能需要更改
term
的值,或将其清空 - 当程序在运行时,请尽量不要在其它处登录选课系统
- 程序现可处理用户在其它处登录的情况
loglevel
必须是1到5之间的整数- 程序运行日志默认会被保存在
selection.log
中,可以使用文本编辑器打开查看
在命令行中执行下列命令
python SCourseHelper.py
在输入相关信息或者编辑配置后,程序将自动运行尝试选课/蹲课
-
User:
请输入您的用户名
-
Password:
请输入您的密码
-
Do you want to save encrypted credentials in config?[Y/N]
你可以输入
Y
将用户名与加密后的密码保存在配置文件中,输入N
以拒绝 -
Select Term:
在上面的列表中选择您要选课的学期,输入它的编号
-
Please enter the info of courses, enter nothing to finish
程序将会提示您输入您想选课程的相关信息
Enter the course id of course 1 :
输入 8 位课程号
Enter the teacher id of course 1 :
输入 4 位教师号
Do you want to replace a course you have selected with this one?
输入
Y
以启用高级模式的功能,输入N
或直接按回车以跳过Enter the course id of the course to replace :
输入 8 位课程号
Enter the teacher id of the course to replace :
输入 4 位教师号
若想终止输入,请在程序提示输入下一个课程信息时什么都不要输入,直接按回车
请确保你输入的课程信息都是正确的,否则程序将在接下来的运行过程中报错
欢迎点 Star,提 issue,讨论或扫码捐助
Licensed under the GPL-3.0 License.