Files
urp-auto/README.md
2025-07-06 14:44:06 +08:00

145 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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