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
脚本,它会在后台自动更新自身代码、运行并生成日历文件,并提供 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