Skip to content

Latest commit

 

History

History
211 lines (123 loc) · 7.68 KB

README_zh_CN.md

File metadata and controls

211 lines (123 loc) · 7.68 KB

SHU 抢课助手 自动选课/抢课/捡漏

lhish改,添加了邮件实时提醒功能

添加了ubuntu下自动重新连接wifi和vpn的功能

将整个代码修改得更加难以报错而终止运行,而是多次进行尝试

调整了一些小地方

由于原本是在1.3.1版本上进行的修改,而这边是直接我看了看进行合并的因此可能出现错误,请注意一下,可能需要自行调整,todo:标注了需要手动更改的地方,只要搜索todo出现的地方进行更改即可。

有什么问题或建议可以在issue中提出

由于本人绩点并不算低,用到的时间不多,并且这个代码是基于别人的更改的,因此维护上并不会很勤奋

English Version

功能简介

本项目可以实现在 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 (信息)

课程信息配置说明

  • 程序读入课程信息可以支持两种模式

    1. 普通模式:课程号,教师号

      示例:00874008,1001

      表示程序将自动尝试选择课程号为00874008,教师号为1001的课程

    2. 高级模式:课程号,教师号,待替换课程号,待替换教师号

      示例:00874008,1001,00874008,1002

      表示当前已经选择了课程号为00874008,教师号为1002的课程,

      但希望换成课程号为00874008,教师号为1001的课程

  • 待选课程必须在选课系统中存在,不重复,否则程序将报错

  • 在第 2 种模式下,当待选课程可被选择时,程序将自动退选待替换的课程,再选择目标课程,同时尝试选回待替换的课程以防在退课间隙目标课程选满

  • 然而此时仍可能有很小几率这两门课程同时选课失败从而掉课,请自行衡量风险后选择使用

  • 课程信息项由course+数字构成,如有需要可以在默认配置文件之上继续添加course10=course11=...等项

其它说明

  • 所有配置都在"="后填写,不能换行
  • 建议仅储存加密的密码以防泄露明文密码
  • encryptpassword不为空时,程序会忽略password的值
  • 程序会忽略格式不正确的配置
  • 在进行新学期选课时,可能需要更改term的值,或将其清空
  • 当程序在运行时,请尽量不要在其它处登录选课系统
  • 程序现可处理用户在其它处登录的情况
  • loglevel必须是1到5之间的整数
  • 程序运行日志默认会被保存在selection.log中,可以使用文本编辑器打开查看

运行程序

在命令行中执行下列命令

python SCourseHelper.py

在输入相关信息或者编辑配置后,程序将自动运行尝试选课/蹲课

程序运行时可能需要您提供的信息

  1. User:

    请输入您的用户名

  2. Password:

    请输入您的密码

  3. Do you want to save encrypted credentials in config?[Y/N]

    你可以输入Y将用户名与加密后的密码保存在配置文件中,输入N以拒绝

  4. Select Term:

    在上面的列表中选择您要选课的学期,输入它的编号

  5. 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,讨论或扫码捐助

License

Licensed under the GPL-3.0 License.