Skip to content

基于 zju-ical 项目的 Python 重构版本,使用爬虫获取课程/考试信息,使用 iCal 格式在 Windows / macOS / Linux / Android / Harmony OS / iOS / iPadOS / watchOS / Wear OS 上方便地访问课程表/考试安排

License

Notifications You must be signed in to change notification settings

Xecades/zju-ical-py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZJU-ICAL-PY

Note

本项目是基于 ZJU-ICAL 项目的 Python 重构版本,更换了调用 API,目前只支持本科生课程表生成。本文档部分参考原项目的 README。

原项目按 LGPL-2.1 协议开源,本项目继承了原项目的协议。

将 ZJU 本科生课程表转换为 iCal 日历格式,方便地导入到 Windows/macOS/Linux/Android/Harmony OS/iOS/iPadOS/watchOS/Wear OS 上,支持:

  • 自动调休安排(由作者不定期维护)
  • 考试安排,包括考点教室、考试座位

Warning

当前项目仍处于测试阶段,可能存在未知的问题,欢迎提交 Issue 或 Pull Request。

免责声明

该项目仅供学习交流使用,作者不对产生结果正确性与时效性做实时保证,使用者需自行承担因程序逻辑错误或课程时间变动导致的后果。

所有服务均在使用者的本地设备上运行,ZJUAM 登录密码加密传输,不会存在任何有关用户隐私的蓄意记录/收集行为。

开始使用

首先使用 git 将本项目克隆到本地,安装 3.12 及以上的 Python 环境(更低版本未经测试),然后使用以下命令安装依赖库:

pip install -r requirements.txt

Caution

由于所有代码均在本地运行,请在使用前使用 git pull 确保代码是最新的,尤其是调休安排发生了更新的时候,你也可能希望在考试安排出来之后重新运行程序来获得考试地点、座位等信息。

zjuical.py 即为主程序,使用以下命令运行:

python zjuical.py -u [username] -p '[password]'

其中 [username] 为浙江大学统一身份认证用户名(即学号),[password] 为统一认证密码,无需方括号,外部引号需保留(防止密码中有特殊字符导致参数传递错误)。例如,假如你的学号为 3230100000,密码为 123456,那么你需要运行:

python zjuical.py -u 3230100000 -p '123456'

运行后即可在当前目录下生成 zjuical.ics 文件,导入到日历应用即可,更多的参数请使用 python zjuical.py --help 查看。

代码更新

由于代码完全在本地运行,所以需要用户手动更新仓库,强烈建议在每次运行前使用 git pull 命令更新代码,以确保获取到最新的调休安排和考试安排。

进阶使用 / webical.py

如果你想省去每次代码更新手动运行的麻烦,可以使用 webical.py 脚本,它会在后台自动更新自身代码、运行并生成日历文件,并提供 HTTP 服务,从而能够在日历软件中直接订阅。

Caution

部分日历软件要求订阅链接可在公网访问,例如 Apple Calendar。因此以下步骤假定你已拥有一个公网 IP 或域名。除此之外,理论上日历的爬取是需要 ZJU 校网的,因此可能需要使用 zju-connect 等工具在服务器上部署校网 VPN。(但是本人在测试的时候发现偶尔不需要校网也能访问,如果你能正常使用可以忽略这一步)

在安装完依赖后,使用以下命令运行:

python webical.py "[传递给zjuical.py的参数]"
# 例如:
# python webical.py "-u 3230100000 -p '123456' -f"

注意,引号必须保留,其内部的值会被直接传递给 zjuical.py 作为参数。默认设定每隔 1 小时自动更新并运行一次日历爬取,由于 zjuical.py 会生成 zjuical.ics 文件,因此你必须在其中添加 -f 参数以强制覆盖之前的文件,否则会导致日历文件无法更新。

除此之外,可通过 -p 参数指定 HTTP 服务端口,默认端口为 5273。开启服务后,你可以在日历软件中订阅 http://[你的公网IP]:5273/zjuical.ics。使用 --help 可查看更多参数。

开发计划

  • 提供网页版订阅,自动推送更新
  • 支持研究生课程表(作者是本科生,欢迎研究生同学合作)
  • 提供更安全的传参方式
  • 整合 zju-connect

About

基于 zju-ical 项目的 Python 重构版本,使用爬虫获取课程/考试信息,使用 iCal 格式在 Windows / macOS / Linux / Android / Harmony OS / iOS / iPadOS / watchOS / Wear OS 上方便地访问课程表/考试安排

Resources

License

Stars

Watchers

Forks

Languages