zzupy package#

Submodules#

zzupy.api module#

class zzupy.api.ZZUPy(usercode: str, password: str, log: bool = False)[源代码]#

基类:object

初始化一个 ZZUPy 对象

参数:
  • usercode (str) – 学号

  • password (str) – 密码

  • log (bool) – 是否启用日志

login(appVersion: str = 'SWSuperApp/1.0.33', appId: str = 'com.supwisdom.zzu', osType: str = 'android') Tuple[str, str][源代码]#

通过学号和密码登录

参数:
  • appVersion (str) – APP 版本 ,一般类似 “SWSuperApp/1.0.33” ,可自行更新版本号,但详细数据需要抓包获取,位于 “passwordLogin” 请求的 User-Agent 中,也可随便填或空着,目前没有观察到相关风控机制。

  • appId (str) – APP 包名,一般不需要修改

  • osType (str) – 系统类型,一般不需要修改

返回:

Tuple[str, str]

  • usercode (str) – 学号

  • name (str) – 姓名

返回类型:

Tuple[str,str]

set_device_params(**kwargs: Unpack[DeviceParams])[源代码]#

设置设备参数。这些参数都需要抓包获取,但其实可有可无,因为目前并没有观察到相关风控机制

参数:
  • deviceName (str) – 设备名 ,位于 “passwordLogin” 请求的 User-Agent 中,组成为 ‘{appVersion}({deviceName})’

  • deviceId (str) – 设备 ID ,

  • deviceInfo (str) – 设备信息,位于名为 “X-Device-Info” 的请求头中

  • deviceInfos (str) – 设备信息,位于名为 “X-Device-Infos” 的请求头中

  • userAgentPrecursor (str) – 设备 UA 前体 ,只需要包含 “SuperApp” 或 “uni-app Html5Plus/1.0 (Immersed/38.666668)” 前面的部分

zzupy.ecard module#

class zzupy.ecard.eCard(parent)[源代码]#

基类:object

get_area_dict() dict[源代码]#

获取区域的字典

返回:

区域字典

返回类型:

dict

get_balance() float[源代码]#

获取校园卡余额

返回:

校园卡余额

返回类型:

float

get_building_dict(areaid: str) dict[源代码]#

获取建筑的字典

参数:

areaid (str) – 通过get_area_dict()获取

返回:

建筑字典

返回类型:

dict

get_remaining_power(room: str) float[源代码]#

获取剩余电量

参数:

room (str) – 格式应为 “areaid-buildingid–unitid-roomid”,可通过get_area_dict(),get_building_dict(),get_unit_dict(),get_room_dict()获取

返回:

剩余电量

返回类型:

float

get_room_dict(areaid: str, buildingid: str, unitid: str) dict[源代码]#

获取房间的字典

参数:
  • areaid (str) – 通过get_area_dict()获取

  • buildingid (str) – 通过get_building_dict()获取

  • unitid (str) – 通过get_unit_dict()获取

返回:

房间字典

返回类型:

dict

get_unit_dict(areaid: str, buildingid: str) dict[源代码]#

获取照明/空调的字典

参数:
  • areaid (str) – 通过get_unit_dict()获取

  • buildingid (str) – 通过get_building_dict()获取

返回:

照明/空调字典

返回类型:

dict

recharge_electricity(room: str, paypasswd: str, amt: int) Tuple[bool, str][源代码]#

为 room 充值电费

参数:
  • room (str) – 宿舍房间。理论上空调和照明均支持.格式应为 “areaid-buildingid–unitid-roomid”,可通过get_area_dict(),get_building_dict(),get_unit_dict(),get_room_dict()获取

  • paypasswd (str) – 支付密码

  • amt (int) – 充值金额

返回:

Tuple[bool, str]

  • success (bool) – 充值是否成功

  • msg (str) – 服务端返回信息。

返回类型:

Tuple[bool,str]

zzupy.log module#

zzupy.log.default_format: str = '<g>{time:MM-DD HH:mm:ss}</g> [<lvl>{level}</lvl>] <c><u>{name}</u></c> | {message}'#

默认日志格式

zzupy.network module#

class zzupy.network.Network(parent)[源代码]#

基类:object

get_online_devices() str[源代码]#

获取全部在线设备

返回:

Json 格式的在线设备数据

返回类型:

str

get_total_traffic() int[源代码]#

获取消耗的流量

返回:

消耗的流量,单位为 MB

返回类型:

int

get_used_time() int[源代码]#

获取使用时间

Return int:

使用时间,单位为 分钟

返回类型:

int

login(loginurl: str = 'http://10.2.7.16:8080', ua: str = 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/343.0.695551749 Mobile/15E148 Safari/604.1')[源代码]#

登录自助服务平台

参数:
  • loginurl (str) – 自助服务平台的登录 URL

  • ua (str) – User Agent

logout_device(sessionid: str) bool[源代码]#
参数:

sessionid (str) – sessionid,可通过 get_online_devices() 获取

返回:

成功或失败

返回类型:

bool

portal_auth(interface: str = 'lo', authurl='http://10.2.7.8:801', ua='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:132.0) Gecko/20100101 Firefox/132.0', isp='campus') Tuple[str, bool, str][源代码]#

进行校园网认证

参数:
  • interface (str) – 网络接口名

  • authurl (str) – PortalAuth 服务器。根据情况修改

  • ua (str) – User-Agent

  • isp (str) – 运营商。可选项:campus,cm

返回:

Tuple[str, bool, str]

  • interface (str) – 本次认证调用的网络接口。

  • success (bool) – 认证是否成功。(不可信,有时失败仍可正常上网)

  • msg (str) – 服务端返回信息。

返回类型:

Tuple[str,bool,str]

zzupy.supwisdom module#

class zzupy.supwisdom.Supwisdom(parent)[源代码]#

基类:object

get_courses(start_date: str) str[源代码]#

获取课程表

参数:

start_date (str) – 课表的开始日期,格式必须为 %Y-%m-%d ,且必须为某一周周一,否则课表会时间错乱

返回:

返回 Json 格式的课程表数据

返回类型:

str

zzupy.typing module#

class zzupy.typing.DeviceParams[源代码]#

基类:TypedDict

deviceId: str#
deviceInfo: str#
deviceInfos: str#
deviceName: str#
userAgentPrecursor: int#

zzupy.utils module#

zzupy.utils.get_default_interface()[源代码]#
zzupy.utils.get_ip_by_interface(interface)[源代码]#
zzupy.utils.get_sign(dynamicSecret, params)[源代码]#

获取sign值

参数:
  • dynamicSecret (str) – login后自动获取,来自 login-token 请求

  • params (str) – URL请求参数

返回:

sign值

返回类型:

str

zzupy.utils.sm4_decrypt_ecb(ciphertext: bytes, key: bytes)[源代码]#

SM4 解密,ECB模式

参数:
  • ciphertext (bytes) – 密文

  • key (bytes) – 密钥

返回:

明文 Hex

返回类型:

str

Module contents#