XTU EMS API client and CLI utilities
Project description
🚀 XTU-EMS-API | 湘潭大学教务聚合接口
一个开发者友好的 EMS(Educational Management System)接入工具包,让你用最少的代码触达湘潭大学的统一身份认证、课表、考试、成绩等关键信息流。🙂
✨ 你将收获什么
- 🎯 多端统一:CLI + Python SDK + Agent Skills 三通道可选。
- 🔐 安全认证链路:覆盖 SSO 登录、EMS Cookie 获取与压缩 Token 传递。
- 📅 完整教务视图:课表、考试、空教室、教学日历、成绩一网打尽。
- 🧩 可扩展脚本:
skills/scripts下的技能脚本随拿随用,可快速改造成自动化任务。
🤖 Agent Skills 兼容声明
本项目已完成 Agent Skills 规范对接(见 skills/SKILLS.md),可被具备技能编排能力的智能体直接调用:
- 在 Agent 中注册
XTU-API-SKILLS规范。 - 为技能配置必要的凭证(如用户名、密码或 Token)。
- 直接透传脚本参数,即可让 Agent 按需触发登录、教务查询和报表整理。🤝
📦 安装与环境
- 需要 Python ≥ 3.10。
- 从 PyPI 安装:
pip install xtu-ems-api
若需本地调试技能脚本,可直接运行
python skills/scripts/<script>.py ...。
🛠️ CLI 使用速览
安装后即刻拥有下列命令,全部支持 --compressed 以接收压缩后的 Cookie Token。
| 命令 | 作用 | 常用参数 |
|---|---|---|
xtu-sso-login |
统一身份认证获取原始 Token | --username --password |
xtu-ems-auth |
用 SSO Token 换取 EMS Cookies | --token --compressed |
xtu-course-schedule |
查询课表 | --token --year --term |
xtu-classroom-availability |
批量查询空教室 | --weeks --day-of-week --sections |
xtu-exam-schedule |
获取考试安排 | --year --term |
xtu-student-info |
查看个人信息档案 | --token |
xtu-teaching-calendar |
拉取教学日历 | --token |
xtu-transcript |
解析成绩(依赖 pdfplumber) |
--token |
xtu-gpa |
计算 GPA(新功能) | --token --start-year --end-year --start-term --end-term --filter |
示例:
xtu-classroom-availability \
--token <cookie_token> \
--year 2025 --term 1 \
--weeks 1 2 3 --day-of-week 1 --sections 1 2 3 --compressed
🐍 作为 Python 库调用
from xtu_ems_api import sso_auth, ems_get_course_schedule
# 1. 登录并获取 EMS Cookies(可选 compressed 写盘后复用)
cookies = sso_auth("202200000000", "your-password")
# 2. 查询 2025-1 学期课表
courses = ems_get_course_schedule(cookies, year=2025, term=1)
for course in courses:
print(course["name"], course["weeks"])
如果你在 Agent 或自动化脚本中使用,也可以直接 import skills/scripts 里的函数,以获得与 CLI 一致的体验。
📘 进阶小贴士
- 🌀 Token 压缩:
--compressed会对 Cookie 进行 gzip+Base64 的体积压缩,适合跨系统传输或 Agent 上下文内使用。 - 🧱 配额与风控:统一身份认证存在防刷限制,请合理设置调用频率;若被锁定通常 24h 自动恢复。
- 📤 PDF 成绩解析:
xtu-transcript会调用pdfplumber,需确保系统支持 PDF 渲染依赖。
🤲 贡献与支持
欢迎通过 Issue / PR 提交 BUG、功能或高校生态相关的技能脚本:
- Fork & 修改。
- 本地运行
python -m build验证打包是否通过。 - 发起 PR 并描述变更与测试情况。
⚠️ 使用须知与免责
- 本项目仅供学习与科研交流,不保证对所有院系/时间段持续可用。
- 使用者需自行确保调用行为符合校方与国家相关法规及隐私政策。
- 对因使用本项目导致的账号封禁、数据泄露或任意直接/间接损失,维护者不承担任何责任。
- 继续使用即视为同意上述条款与 MIT License。
📄 开源协议
本项目遵循 MIT License(详见 LICENSE)。你可以自由复制、分发、商用及二次开发,但需保留版权声明并在衍生作品中附带同样的许可文本。🙏
💬 联系我们
- Maintainer: LeoTan2004
- Issue Tracker: https://github.com/LeoTan2004/XTU-EMS-API/issues
如果本文档未覆盖你的使用场景,欢迎提 Issue 交流,我们很乐意继续完善!🎉
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file xtu_ems_api-1.1.1.tar.gz.
File metadata
- Download URL: xtu_ems_api-1.1.1.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9506493ee73432e7cb82cd291016f517e005e4819ea5960435f5c00d88c62a24
|
|
| MD5 |
b5e84fc310caa602547822eff3dc6eb2
|
|
| BLAKE2b-256 |
43b45a0e7d3ceb3ca6cdb6aa1dbf537fb13a34067728dcba572b3cac5a1a39d6
|
File details
Details for the file xtu_ems_api-1.1.1-py3-none-any.whl.
File metadata
- Download URL: xtu_ems_api-1.1.1-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8958e4dd1fe8e3ff39d17be4a59b6dffe82f7aede44bf8289544a56bc9a21b39
|
|
| MD5 |
3bb4fbb4423c69dbe4bb71621034f877
|
|
| BLAKE2b-256 |
8e9be65d5db8b38638f31e70e5a3079bf5460d80b3b58094b7e32c49573d48af
|