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

2.7 KiB
Raw Permalink Blame History

🎓 莞工教务选课系统 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 使用

# 查看可选课轮次
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 使用

./dgut-gui.sh
# 或
./dgut-gui/start.sh

GUI 界面提供:

  • 课程类型下拉切换(自动探测所有可用标签页)
  • 实时搜索过滤
  • 一键选课/退课按钮
  • 操作日志显示
  • 已选学分/门数统计

依赖

  • Python 3.x
  • browser-act-cli — 浏览器自动化
  • customtkinter — GUI 界面(已安装在虚拟环境中)

工作方式

你的操作  →  dgut.py/dgut_gui.py  →  构造 fetch() JavaScript
         →  browser-act eval     →  在浏览器中执行 fetch()
         →  教务系统 API         →  返回 JSON 数据
         →  解析并展示结果

所有 API 请求的认证由浏览器会话的 Cookie 自动处理,应用本身不存储任何凭证。

API 参考

详细 API 信息参见 记忆文档