Skip to main content

豫见郑大的 Python API 封装 / An API wrapper for Zhengzhou University Mobile Campus written in Python.

Project description

ZZU.Py

Ask DeepWiki

豫见郑大相关服务的 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.set_token("your_userToken", "your_refreshToken")
# cas.set_device("your_deviceId")
if cas.mfa.is_required():
    cas.mfa.send_sms()
    cas.mfa.verify_sms(input("input sms code:"))
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, force_bind=True) as client:
    result = client.auth("your_account", "your_password")
    print(result.message)

模块概览

zzupy.app

  • CASClient: App 端统一认证
  • UndergradEASClient: 新本科教务课表与学期数据
  • ECardClient: 校园卡余额、电费与房间相关接口

zzupy.web

  • discover_portal_info: 自动探测校园网 Portal 参数
  • EPortalClient: Portal 认证
  • SelfServiceSystem: 自助服务系统设备管理

zzupy.aio

  • 提供 appweb 下主要客户端的异步版本

文档

开发

项目使用 uv 管理环境和命令。

uv sync --extra develop,docs
uv run python scripts/generate_api_reference.py
uv run zensical serve
uv run zensical build
ruff format zzupy
ruff check zzupy
ty check zzupy
uv build

异常处理建议优先捕获 zzupy.exception.ZZUError,再按需细分到 NetworkErrorParsingErrorOperationErrorInvalidArgumentError 等具体异常。

如需快速打开库内日志,推荐直接调用 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zzupy-7.2.2.tar.gz (120.6 kB view details)

Uploaded Source

Built Distribution

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

zzupy-7.2.2-py3-none-any.whl (60.4 kB view details)

Uploaded Python 3

File details

Details for the file zzupy-7.2.2.tar.gz.

File metadata

  • Download URL: zzupy-7.2.2.tar.gz
  • Upload date:
  • Size: 120.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for zzupy-7.2.2.tar.gz
Algorithm Hash digest
SHA256 ed491732fe330018d1315576941d8bb7abab295783697baad4e0c58a78536fa5
MD5 7f9e96158f6d0a4841547f308bce3373
BLAKE2b-256 3c2a8c63d00c09287ec7ff101e4d8c1c73a7b8ced70fd2ba83a15b7de39567a5

See more details on using hashes here.

File details

Details for the file zzupy-7.2.2-py3-none-any.whl.

File metadata

  • Download URL: zzupy-7.2.2-py3-none-any.whl
  • Upload date:
  • Size: 60.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for zzupy-7.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7207454e3aec7318252c30148d6630357d669a20de3de7dd3965b3495a99b7ad
MD5 87819d22b3b0cbf8dee370e72cb0a3b1
BLAKE2b-256 2b90c344c3c1e12098423fcb6b17d084176444f7b562ca094a5c63bd4953b483

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