课表 (.ics) 生成
如果你是广东科技学院学生,请访问 ClassTable2ICS ,可自动生成学生课表。
简介
iCalendar 是广泛使用的日历数据交换标准,在诸如 Apple 日历、Google Calendar 的日历 app 中创建日历项,不仅可清晰的了解日程安排,更可体验 iOS、Android 系统为日历提供的各种功能:计划出行时间、日程提醒、如 Siri 与 Google Assistant 等智能语音助理自动化服务等。
不过,并非所有学校都为学生提供 ics 日历,因此本代码旨在用 Python 3 协助你创建一个自己的 ics 日历课表。
功能
- 经测试,兼容 Apple 日历、Google CalendarOutlook Calendar、MIUI Calendar、Boomsung Calendar 等日历应用,支持上述应用的日历订阅(
特别提醒
部分一加
手机日历不支持
导入ics文件至日历,需要自行下载完整版的日历app)(如果以本代码生成的文件创建日历订阅) - 支持录入各种信息,示例代码中包含:教室、课程名称、教师、必修/选修状态等
- 支持多种课程时间安排:单独的周数,范围的周数,奇偶周数,如 “第2周,5 至 11 周中的单数周,13 至 17 周”
- 支持添加教学楼信息,其中 Apple 日历还支持教学楼 GPS 定位 ,在日历项中添加教学楼,就可利用 iOS 的 Siri 分析功能在多个 app 中获得附加功能
- 导入到系统日历后,支持诸多由操作系统提供的日历功能:例如,在 iOS 设备中添加日历项后,你可以直接向 Siri 询问:「我下周五有什么日程?」获得下周五的课表;或是在 Apple Watch 表盘上显示下一个课程的时间;或是使用 Shortcut 捷径进行更多操作。
使用
生成后使用
关于导入日历和订阅日历
名词释义
导入日历
导入日历是一次性行为,生成 ics 并导入日历后,日历 app 将仅保留 ics 文件中的日历项。在需要变更日历时,可能需要先移除已有的日历项,再重新导入新的日历。
其特点是数据一经导入后便进行存档,并且,你可以随时在日历 app 中修改日历项的内容,例如调整日历项的时间、地点、标题、内容等等。
导入日历相当于是复制了 ics 中的日历项并创建到你的日历当中。
订阅日历
订阅日历是一个只读行为,你需要向日历 app 提供日历(ics 文件)的地址,日历 app 将自动定时请求这一地址,以检查日历有无发生变更,并在变更时自动将更新的日历同步到你的日历 app 中。
其特点是数据随远程 ics 文件的变化而变化,并且,日历项完全由 ics 文件决定,你不能修改日历项的任何内容。
订阅日历的好处是,只要服务端的日历变更,日历 app 中的数据便会获得同步变更。
iOS、iPadOS 用户
导入日历
要导入日历,你需要在 iOS、iPadOS 上设法打开 ics 文件,较为简单的方法是:(iOS 与 iPadOS 相同)
- 如果你有 Mac 等其他 Apple 设备并支持 AirDrop,将 ics 文件 AirDrop 到需要导入日历的 iOS 设备即可;
- 如果你使用 iOS 自带的邮件 app,将 ics 作为附件发送邮件给设备,并点击附件中的 ics 文件;
- 如果你有网络服务器,或有办法将 ics 上传到一个网站上,使用 Safari 浏览器打开链接到 ics 文件的地址;
导入的界面类似下图
点击「添加全部」按钮,将会导入所有日历项到你的日历当中。
注意!若你只有一个日历(日历是容纳日历项的地方,iOS 支持创建多个日历),点击「添加全部」将直接添加到你的唯一日历中,此日历可能包含了你的其他日历项,直接添加到默认日历可能造成后续删除课表极为不便(难以进行批量删除)。
强烈建议首先创建一个空白日历,此后点击「添加全部」,iOS 会提示你选择导入的日历,选择空白日历有利于后续进行批量管理。
订阅日历
要订阅日历,你必须将 ics 放在一个固定可访问的 URL 地址,这可能要求你有可控制的 Web 服务器。
Android 用户
导入日历
要导入日历,通iOS 设备一样,你需要在Android 上设法打开 ics 文件,较为简单的方法是:
- 浏览器下载ics文件,使用日历打开.
- 如果你使用邮件 app,将 ics 作为附件发送邮件给设备,并点击附件中的 ics 文件;
- 如果你有网络服务器,或有办法将 ics 上传到一个网站上,使用 Safari 浏览器打开链接到 ics 文件的地址;
导入的界面类似下图
点击「添加全部」按钮,将会导入所有日历项到你的日历当中。
注意!若你只有一个日历(日历是容纳日历项的地方,Android 同样支持创建多个日历),点击「添加全部」将直接添加到你的唯一日历中,此日历可能包含了你的其他日历项,直接添加到默认日历可能造成后续删除课表极为不便(难以进行批量删除)。
强烈建议首先创建一个空白日历,此后点击「添加全部」,Android 会提示你选择导入的日历,选择空白日历有利于后续进行批量管理。
订阅日历
要订阅日历,你必须将 ics 放在一个固定可访问的 URL 地址,这可能要求你有可控制的 Web 服务器。
为什么使用 iCal
在诸如 Apple 日历、Google Calendar 的日历 app 中创建日历项,不仅可清晰的了解日程安排,更可体验 iOS、Android 系统为日历提供的各种功能:计划出行时间、日程提醒、如 Siri 与 Google Assistant 等智能语音助理自动化服务等
例如,在设备中添加日历项后,你可以直接向语音助手询问「明天有什么日程」