自动选课脚本
自动选课脚本
一个用于某URP系统的自动监控课程余量并进行选课的工具。当目标课程有余量时,程序会自动尝试选课,并推送选课结果。
地址:https://github.com/flt6/urp-auto/
功能特点
- 🔄 自动监控课程余量
- 📱 微信消息推送通知
- 🔁 失败自动重试
- 📊 支持多种格式的课程文件
- 📝 详细的日志记录
使用前准备
1. 准备课程文件
创建一个Excel文件(建议命名 lessons.xlsx
),至少包含以下三列:
课程号 | 课序号 | 课程名 |
---|---|---|
080302001 | 01 | 高等数学A |
080302002 | 02 | 线性代数 |
说明:
- 课程名:课程的完整名称,不允许增加空格等,建议直接复制选课手册行。
- 允许出现除上述内容以外的项,所以如果是辽大的可以直接复制选课手册对应行到文件中。
- 允许存在同一课程多个课序号,将按照自上而下的顺序选,任何一个选课成功就认为该课程选课成功。
- 具体格式参考
demo.xlsx
和demo.csv
- 支持的文件格式:
.xlsx
、.xls
、.csv
、.json
2. 配置环境变量
创建 .env
文件,包含以下配置:
# 教务系统登录信息
uname=你的学号
password=你的密码
# 验证码识别服务账号(必需)
recap_username=验证码识别服务用户名
recap_password=验证码识别服务密码
# 课程文件路径
# 改成自己起的名字,注意拓展名
FILE=lessons.xlsx
# 微信推送服务(可选)
SC_KEY=你的ServerChan密钥
# 教务系统地址(可选,默认为辽宁大学)
base=http://jwstudent.lnu.edu.cn
你可以查看.env_demo
查看样例。
3. 获取验证码识别服务
目前使用 http://www.fdyscloud.com.cn/ 提供的验证码识别,0.003 元/张。
这是一个付费平台,与作者无关。
操作方法:
- 打开并注册账号(密码建议随机,因为要明文保存)
- 充值合适余额(1元估计就够用到大学毕业了)
- 在.env文件中
recap_username
和recap_password
输入你的账号密码。
如果您不希望付费,可以修改代码中的Lessons.recapture
自行实现本地验证码OCR。
4. 设置推送(可选)
如需接收选课结果的微信推送:
注意,Server33酱会产生费用
5. 安装依赖
pip install -r requirements.txt
使用方法
-
确保已完成上述准备工作
-
将课程文件和
.env
文件放在脚本同目录下 -
运行脚本:
python main.py
运行流程
- 登录验证: 自动登录教务系统
- 读取课程: 从课程文件中读取要选择的课程信息
- 监控余量: 循环检查各课程的剩余名额
- 自动选课: 发现有余量时立即尝试选课
- 结果通知: 通过推送选课结果
- 持续监控: 未选上的课程继续监控
注意事项
⚠️ 重要提醒:
- 请在选课开放时间内使用,在未开放时会发生未知错误。
- 确保网络连接稳定
- 验证码识别服会产生费用
- 建议在选课高峰期前测试配置是否正确
- 程序会自动处理网络异常和重新登录
日志文件
程序运行时会在 logs
目录下生成详细的日志文件,文件名格式为 lessons_YYYYMMDD_HHMMSS.log
,可用于排查问题。
文件结构
项目目录/
├── main.py # 主程序
├── .env # 环境变量配置文件
├── lessons.xlsx # 课程信息文件
├── logs/ # 日志文件目录
└── README.md # 说明文档
常见问题
Q: 程序提示"请在环境变量中设置xxx"
A: 检查 .env
文件是否存在且包含所有必需的配置项
Q: 一直提示登录失败
A: 检查用户名密码是否正确,以及验证码识别服务是否可用
Q: 找不到课程信息
A: 检查课程文件中的课程号和课序号是否正确
Q: 没有收到推送
A: 检查 ServerChan 配置是否正确,或查看日志中的错误信息
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果