add readme and requirements
This commit is contained in:
138
README.md
Normal file
138
README.md
Normal file
@ -0,0 +1,138 @@
|
||||
# 自动选课脚本
|
||||
|
||||
一个用于某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
|
||||
```
|
||||
|
||||
你可以查看`.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 配置是否正确,或查看日志中的错误信息
|
6
requirements.txt
Normal file
6
requirements.txt
Normal file
@ -0,0 +1,6 @@
|
||||
python-dotenv
|
||||
pandas
|
||||
requests
|
||||
beautifulsoup4
|
||||
serverchan-sdk
|
||||
openpyxl
|
Reference in New Issue
Block a user