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.1.tar.gz (120.2 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.1-py3-none-any.whl (59.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: zzupy-7.2.1.tar.gz
  • Upload date:
  • Size: 120.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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.1.tar.gz
Algorithm Hash digest
SHA256 d4e8740da94a19bd3c7aac230a3325d29590103bf32453379fd0d9ac9de2a7f0
MD5 6b1e3be6a28d82a1ec5ed162e13323b7
BLAKE2b-256 a8ef3acd82e6f749158f3093a53fb7f38bb0d10e01b539decbd90197c3bfbba4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: zzupy-7.2.1-py3-none-any.whl
  • Upload date:
  • Size: 59.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9259ea4dc6a8b2ee844f3360ef72ad928b93cb363b0e556874851d735bae6d11
MD5 d9db6d578f67546122ca7459177d68de
BLAKE2b-256 ef3da2104d9320cf4d980e8ae9e571655c8fc06a53f92a7852ca182ecf45e7a6

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