豫见郑大的 Python API 封装 / An API wrapper for Zhengzhou University Mobile Campus written in Python.
Project description
ZZU.Py
豫见郑大相关服务的 Python API 封装。
概述
zzupy 面向郑州大学常用线上服务,提供统一、显式且带类型提示的 Python 客户端。当前主要覆盖:
- App 端统一认证(CAS)
- 新本科教务(EAS)
- 校园一卡通
- 校园网 Portal 认证与自助服务系统
- 对应的异步实现
[!WARNING] 当前仅适配本科教务新系统,研究生教务暂未支持。
特性
- 账密登录与 Token 复用并存,适合脚本和长期任务
- 同步 / 异步 API 基本对齐,迁移成本低
- 使用 Pydantic 模型组织响应数据,便于补全和校验
- 提供统一异常层级,公共异常基类为
zzupy.exception.ZZUError - 保留较底层的请求行为,尽量贴近真实上游接口
安装
pip install -U zzupy
要求:
- Python
>=3.11
快速开始
统一认证 + 本科教务
from zzupy.app import CASClient, UndergradEASClient
cas = CASClient("your_account", "your_password")
cas.login()
with UndergradEASClient(cas) as eas:
eas.login()
week = eas.get_teaching_week(week=1)
lesson = week.get(weekday=1, unit=1)
if lesson:
print(lesson.course.name_zh)
校园网 Portal 认证
from zzupy.web import EPortalClient, discover_portal_info
portal = discover_portal_info()
with EPortalClient(portal.portal_server_url, bind_address=portal.user_ip) as client:
result = client.auth("your_account", "your_password")
print(result.success, result.message)
模块概览
zzupy.app
CASClient: App 端统一认证UndergradEASClient: 新本科教务课表与学期数据ECardClient: 校园卡余额、电费与房间相关接口
zzupy.web
discover_portal_info: 自动探测校园网 Portal 参数EPortalClient: Portal 认证SelfServiceSystem: 自助服务系统设备管理
zzupy.aio
- 提供
app与web下主要客户端的异步版本
文档
开发
项目使用 uv 管理环境和命令。
uv sync --extra develop,docs
ruff format zzupy
ruff check zzupy
ty check zzupy
uv build
异常处理建议优先捕获 zzupy.exception.ZZUError,再按需细分到 NetworkError、ParsingError、OperationError、InvalidArgumentError 等具体异常。
如需快速打开库内日志,推荐直接调用 logger.enable("zzupy")。
# 启用 TRACE 日志
from loguru import logger
import sys
logger.remove()
logger.add(sys.stderr, level="TRACE")
logger.enable("zzupy")
许可证
本项目使用 MIT 许可证,详见 LICENSE。
相关链接
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 zzupy-7.0.0.tar.gz.
File metadata
- Download URL: zzupy-7.0.0.tar.gz
- Upload date:
- Size: 73.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e7cf38b4cbaab9c32c5e688c1a5d3e5872956932cf2f68be3cd41c45817c43a
|
|
| MD5 |
75f1972b3bb0cbbc51fc9f7de6973ad4
|
|
| BLAKE2b-256 |
fcb6e23b4cd3e80987dd403c437a1e9759e5efa31c2ea37007b60b0f006db2f7
|
File details
Details for the file zzupy-7.0.0-py3-none-any.whl.
File metadata
- Download URL: zzupy-7.0.0-py3-none-any.whl
- Upload date:
- Size: 52.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad051678200c217ddcad1757c1e2d8870665ffffe496a092746d99159b8b325a
|
|
| MD5 |
256923cdd88573046ae280b1072653df
|
|
| BLAKE2b-256 |
b5db60174ae1a3196b19b667f165422bb428f1ead20443b92de25940ed8f768d
|