一键生成课程表ics文件, 可直接导入iOS日历
该脚本能实现浙江大学课程表自动抓取并一键转换为 ics 日历文件,同时具备区别春夏秋冬学期,自动识别单双周课程,节假日无课,调休自动转换等功能。 导入Apple日历效果如下:
首先需要有python3
环境,然后在命令行运行以下代码,安装脚本需要的两个库:
pip install requests
pip install icalendar
下载 timetable.py
文件。鉴于可能有些同学对github不太熟悉,这里简单介绍一下怎么下载:
点击绿色的code
按钮,然后点击download zip
即可。
找到第230和233行,填写 username
和 password
为浙大统一身份认证账户密码,运行程序(默认生成2022-2023学年秋冬课表,所以其他数据如data
, holiday
, exchange
不需要改动)。
运行 timetable.py
文件,在同目录下生成 timetable.ics
文件,将该文件导入Apple
日历,大功告成!
如果您只有一台iPhone设备,不是MacBook + iPhone的用户,可能会遇到导入不全的问题,不过这也一样没问题。此时,您必须使用iPhone的邮箱
app来导入日历。有两个方法可供您选择:
- 将
timetable.ics
作为附件发送到iPhone的邮箱
app中(可以发送到自己iCloud邮箱中)。 - 先将
timetable.ics
放到文件
app中,然后长按选中timetable.ics
,点击共享,选择邮箱
app,发送一份邮件给自己。此时点击邮件附件中的timetable.ics
,点击右上角“添加全部”,选择想要导入到的日历即可。
data
表示学年,这里应替换成您希望生成课表的学年。
data = {'xnm': '2022-2023'}
semester_info
存储您想要查询的所有单个学期的信息,包含了学期名(春/夏/秋/冬),开始时间和结束时间。注意:开始时间必须是某一周的周一,且与data
学年所匹配。
semester_info = [
{'semester': '秋', 'start': '2022-09-12', 'end': '2022-11-06'},
{'semester': '冬', 'start': '2022-11-07', 'end': '2023-01-01'}
]
holiday
表示节假日的日期,holiday
中每一组小的list
中的两个元素分别表示节日的开始和结束日期。请自行参考浙江大学校历的官方安排。
holiday = [
['2022-10-01', '2022-10-07'],
['2022-10-21', '2022-10-23']
]
exchange
表示调休的日期,exchange
中每一组小的list
中的两个元素分别表示对换的两个日期。请自行参考浙江大学校历的官方安排。
exchange = [
['2022-10-08', '2022-10-06'],
['2022-10-09', '2022-10-07'],
['2022-10-15', '2022-10-21']
]
- 地址
- 考试信息
- 相同连续课程拼接
感谢smd1121的ZJUAutoScoreQuery仓库,教会了我如何实现浙大统一身份认证登录。
https://icalendar.readthedocs.io/en/latest/usage.html
https://www.jianshu.com/p/237c336f0b7f