Skip to main content

豫见郑大的 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

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

文档

开发

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

uv sync --extra develop,docs
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.0.0.tar.gz (73.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.0.0-py3-none-any.whl (52.0 kB view details)

Uploaded Python 3

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

Hashes for zzupy-7.0.0.tar.gz
Algorithm Hash digest
SHA256 1e7cf38b4cbaab9c32c5e688c1a5d3e5872956932cf2f68be3cd41c45817c43a
MD5 75f1972b3bb0cbbc51fc9f7de6973ad4
BLAKE2b-256 fcb6e23b4cd3e80987dd403c437a1e9759e5efa31c2ea37007b60b0f006db2f7

See more details on using hashes here.

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

Hashes for zzupy-7.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad051678200c217ddcad1757c1e2d8870665ffffe496a092746d99159b8b325a
MD5 256923cdd88573046ae280b1072653df
BLAKE2b-256 b5db60174ae1a3196b19b667f165422bb428f1ead20443b92de25940ed8f768d

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