sep-api
国科大教务系统 (SEP) 非官方 API 客户端。提供 CLI 工具和 RESTful API 两种方式操作教务系统。
功能
- 登录认证(验证码自动识别 + 二次验证)
- 选课管理(查看已选、搜索、选课)
- 成绩查询
- 讲座管理(人文 / 科学前沿讲座记录与报名)
- 课程评估(一键全优)
- RESTful API 服务器(可选)
安装
# 最小安装(CLI + Python SDK)
pip install sep-api
# 完整安装(含 API 服务器 + Tesseract OCR)
pip install sep-api[all]
# 仅 API 服务器
pip install sep-api[api]
# 仅 Tesseract OCR 支持
pip install sep-api[tesseract]
快速开始
CLI 使用
# 交互模式(TUI)
sep-api
# 登录
sep-api login -u 用户名 -p 密码
# 查看已选课程
sep-api courses
sep-api --json courses # JSON 输出
# 搜索课程
sep-api search 课程编码
# 选课
sep-api select 课程ID
# 查看成绩
sep-api grades
sep-api --json grades
# 讲座
sep-api lectures -t hum-rec # 人文讲座记录
sep-api lectures -t sci-rec # 科学前沿讲座记录
sep-api lectures -t hum-list # 人文讲座报名列表
# 启动 API 服务器(需要 sep-api[api])
sep-api serve
Python SDK
import asyncio
from sep_api.client import SEPClient
async def main():
client = SEPClient()
await client.initialize()
# 获取并识别验证码
image = await client.get_captcha()
captcha = await client.recognize_captcha(image)
# 登录
await client.login("用户名", "密码", captcha)
# 使用服务
from sep_api.services.xkgo import XkgoService
xkgo = client.get_service(XkgoService)
courses = await xkgo.get_selected_courses()
print(courses)
await client.close()
asyncio.run(main())
CLI 命令参考
| 命令 | 说明 | 主要选项 |
|---|---|---|
sep-api |
交互模式 (TUI) | |
sep-api login |
登录 | -u 用户名, -p 密码 |
sep-api courses |
已选课程 | --json |
sep-api search <编码> |
搜索课程 | --json |
sep-api select <ID> |
选课 | --json |
sep-api grades |
查看成绩 | --json |
sep-api lectures |
讲座信息 | -t hum-rec/sci-rec/hum-list, --json |
sep-api serve |
API 服务器 | --host, --port, --reload |
API 端点参考
需安装 sep-api[api],运行 sep-api serve 后访问 http://localhost:8000/docs 查看交互式文档。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/captcha |
获取验证码 |
| POST | /auth/login |
登录 |
| POST | /auth/logout |
登出 |
| GET | /user/info |
用户信息 |
| GET | /courses |
已选课程 |
| POST | /courses/search |
搜索课程 |
| POST | /courses/select |
选课 |
| GET | /xkcts/grades |
成绩查询 |
| GET | /xkcts/lectures/humanity/record |
人文讲座记录 |
| GET | /xkcts/lectures/science/record |
科学前沿讲座记录 |
| GET | /xkcts/lectures/humanity/list |
人文讲座报名列表 |
| GET | /xkcts/evaluations |
评估列表 |
| POST | /xkcts/evaluations/auto |
自动评估 |
验证码配置
默认使用 AntiCAP(本地 ONNX 模型推理,无需联网或配置 API key),失败时自动降级到 Tesseract。
通过环境变量切换:
export CAPTCHA_METHOD=anticap # AntiCAP 本地模型(默认)
export CAPTCHA_METHOD=tesseract # Tesseract OCR(需要 sep-api[tesseract])
export CAPTCHA_METHOD=chaojiying # 超级鹰
超级鹰需额外配置:
export CHAOJIYING_USERNAME=...
export CHAOJIYING_PASSWORD=...
export CHAOJIYING_SOFT_ID=...
Claude Code Skill
本项目包含 Claude Code Skill(skills/sep-api.md),让 AI agent 能通过 CLI 操作教务系统。
安装后在 Claude Code 中使用 /skill 加载即可。
开发
git clone https://github.com/tbjuechen/sep-api.git
cd sep-api
pip install -e ".[all]"
# 测试
pytest
# 代码检查
ruff check src/
ruff format src/
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sep_api-0.1.0.tar.gz
(23.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
sep_api-0.1.0-py3-none-any.whl
(27.2 kB
view details)
File details
Details for the file sep_api-0.1.0.tar.gz.
File metadata
- Download URL: sep_api-0.1.0.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebb7f43a63d546dc8267a9baf564e4552e83027958d52068a66a321f93d81169
|
|
| MD5 |
b22731e6b336672232e7aa87ecf9d20e
|
|
| BLAKE2b-256 |
1b18fca4ef31977f3250ebdc7dc4f7fc360c2dc738acd5a5ccc9a0065d294ac3
|
File details
Details for the file sep_api-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sep_api-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ebc2b8ff7fc62d5b307ef11e166bc6b17a2acd50ea2abdbc214d831207f1180
|
|
| MD5 |
4eb58cc43fdcb7afdda217f0f11f0077
|
|
| BLAKE2b-256 |
fce9d16000fc2c6bf182fc506ad78c84ed33d8c83c05f0783791163cbf0ca682
|