101 lines
2.7 KiB
Markdown
101 lines
2.7 KiB
Markdown
|
|
# 🎓 莞工教务选课系统 CLI + GUI
|
|||
|
|
|
|||
|
|
通过命令行或图形界面直接操作莞工教务系统选课,无需打开浏览器手动操作。
|
|||
|
|
|
|||
|
|
## 原理
|
|||
|
|
|
|||
|
|
利用已有的 `browser-act` 浏览器会话,通过 JavaScript `fetch()` 在浏览器上下文中直接调用教务系统的 API,自动携带登录态,不需要额外认证。
|
|||
|
|
|
|||
|
|
## 功能
|
|||
|
|
|
|||
|
|
- ✅ 查看可选课轮次
|
|||
|
|
- ✅ 动态探测选课中心开放了哪些标签页(选修/必修/公选/跨专业等)
|
|||
|
|
- ✅ 列出课程列表(编号、名称、学分、容量、已选状态)
|
|||
|
|
- ✅ 一键选课
|
|||
|
|
- ✅ 一键退课
|
|||
|
|
- ✅ 搜索课程(支持名称和编号)
|
|||
|
|
- ✅ 图形界面(CustomTkinter)
|
|||
|
|
- ✅ 自适应不同选课轮次,未来新增轮次无需改代码
|
|||
|
|
|
|||
|
|
## 文件结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
├── dgut.py # CLI 入口
|
|||
|
|
├── dgut-gui.sh # GUI 快捷启动
|
|||
|
|
└── dgut-gui/
|
|||
|
|
├── dgut_core.py # 核心 API 模块 (CLI 和 GUI 共用)
|
|||
|
|
├── dgut_gui.py # CustomTkinter 图形界面
|
|||
|
|
├── start.sh # GUI 启动脚本
|
|||
|
|
└── venv/ # Python 虚拟环境 (含 customtkinter)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用前提
|
|||
|
|
|
|||
|
|
1. 已安装 `browser-act` CLI 工具
|
|||
|
|
2. 已通过 `browser-act` 打开浏览器并登录了莞工教务系统
|
|||
|
|
3. 浏览器会话处于活跃状态
|
|||
|
|
|
|||
|
|
## CLI 使用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看可选课轮次
|
|||
|
|
python3 dgut.py list-cycles
|
|||
|
|
|
|||
|
|
# 探测选课中心开放了哪些标签页
|
|||
|
|
python3 dgut.py list-tabs
|
|||
|
|
|
|||
|
|
# 列出课程(默认加载第1个有数据的标签)
|
|||
|
|
python3 dgut.py list-courses
|
|||
|
|
|
|||
|
|
# 加载指定标签的课程
|
|||
|
|
python3 dgut.py list-courses 2
|
|||
|
|
|
|||
|
|
# 按课程编号选课
|
|||
|
|
python3 dgut.py select 0410578
|
|||
|
|
|
|||
|
|
# 按课程名称选课
|
|||
|
|
python3 dgut.py select "微信小程序"
|
|||
|
|
|
|||
|
|
# 退课
|
|||
|
|
python3 dgut.py drop 0410531
|
|||
|
|
|
|||
|
|
# 搜索课程
|
|||
|
|
python3 dgut.py search 鸿蒙
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## GUI 使用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
./dgut-gui.sh
|
|||
|
|
# 或
|
|||
|
|
./dgut-gui/start.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
GUI 界面提供:
|
|||
|
|
- 课程类型下拉切换(自动探测所有可用标签页)
|
|||
|
|
- 实时搜索过滤
|
|||
|
|
- 一键选课/退课按钮
|
|||
|
|
- 操作日志显示
|
|||
|
|
- 已选学分/门数统计
|
|||
|
|
|
|||
|
|
## 依赖
|
|||
|
|
|
|||
|
|
- Python 3.x
|
|||
|
|
- [browser-act-cli](https://github.com/your-org/browser-act) — 浏览器自动化
|
|||
|
|
- customtkinter — GUI 界面(已安装在虚拟环境中)
|
|||
|
|
|
|||
|
|
## 工作方式
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
你的操作 → dgut.py/dgut_gui.py → 构造 fetch() JavaScript
|
|||
|
|
→ browser-act eval → 在浏览器中执行 fetch()
|
|||
|
|
→ 教务系统 API → 返回 JSON 数据
|
|||
|
|
→ 解析并展示结果
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
所有 API 请求的认证由浏览器会话的 Cookie 自动处理,应用本身不存储任何凭证。
|
|||
|
|
|
|||
|
|
## API 参考
|
|||
|
|
|
|||
|
|
详细 API 信息参见 [记忆文档](https://github.com/your-org/dgut-course-cli/wiki)。
|