Skip to main content

国科大教务系统 (SEP) 非官方 API 客户端

Project description

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

MIT

Project details


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sep_api-0.1.0-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

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

Hashes for sep_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ebb7f43a63d546dc8267a9baf564e4552e83027958d52068a66a321f93d81169
MD5 b22731e6b336672232e7aa87ecf9d20e
BLAKE2b-256 1b18fca4ef31977f3250ebdc7dc4f7fc360c2dc738acd5a5ccc9a0065d294ac3

See more details on using hashes here.

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

Hashes for sep_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0ebc2b8ff7fc62d5b307ef11e166bc6b17a2acd50ea2abdbc214d831207f1180
MD5 4eb58cc43fdcb7afdda217f0f11f0077
BLAKE2b-256 fce9d16000fc2c6bf182fc506ad78c84ed33d8c83c05f0783791163cbf0ca682

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page