Files
dgut-jwx-gui/dgut-gui/README.md
ChoChoX 059e1de984 莞工教务选课系统 CLI + GUI
通过 browser-act 浏览器会话直接调用教务系统 API,
支持命令行和图形界面操作选课/退课,自适应不同选课轮次。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 01:58:31 +08:00

101 lines
2.7 KiB
Markdown
Raw 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.
# 🎓 莞工教务选课系统 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)。