2020 把课程表导入日历 python3 Windows/Macos
2020 把课程表导入日历 python3
借鉴了这位的 文章,思路非常清晰明了,但是在Windows实现时,代码出现了非常多的问题。
这里将代码由python2改成python3,并进行了改进,实测Windows和Mac都可以完美运行
管理课表是大学生非常头疼的事情,稍有不慎就忘了上课(确实有时候也不是因为忘了,就是不想去),所以我们需要把课程表(word、excel)转成便于查看的形式,作为最方便的形式,整理下课程表,一起导入到日历里。
iOS端其实 App Store 里课程表的应用并不少,各个学校也可能有自己的教务系统爬下来做出来的课程助手,所以管理课程这件事并不是难事。但是这些课程助手与官方app比还是差了一点,所以我选择iOS官方日历+outlook日历。
将课程表导入到日历管理的好处十分明显:
- 统一管理。将课程和其他安排统一管理,方便安排和查看
- 好看。官方app毕竟是职业程序员做出来的,优雅而美观,掉链子的可能性最小
程序总共由两个脚本完成,最后将 ICS 导入日历即可。步骤概要:
1、使用 excelReader.py 将保存的 classInfo Excel 表格导出容易解析的 conf_classInfo.json
2、使用 main.py 将配置好的 conf_classTime.json 和生成的 conf_classInfo.json 生成一个 class.ics
3、将 class.ics 导入手机或者电脑
4、搞定!
环境要求
Python 3
执行详解
1、配置 classInfo Excel 表格
在工作目录下创建一个 classInfo Excel 表格,表格表头有如下参数:
className:课程名称
startWeek:起始周
endWeek:结束周
weekday:星期
classTime:第几节。(请这里是大课的节数)
classroom:教室
2、配置 conf_classTime.json
来吧,照猫画虎:
{
"classTime": [
{
"name":"第 1、2 节",
"startTime":"0830",
"endTime":"1005"
},
{
"name":"第 3、4 节",
"startTime":"1020",
"endTime":"1155"
},
{
"name":"第 5、6 节",
"startTime":"1430",
"endTime":"1605"
},
{
"name":"第 7、8 节",
"startTime":"1620",
"endTime":"1755"
},
{
"name":"第 9、10 节",
"startTime":"1930",
"endTime":"2105"
}
]
}
3、运行 excelReader.py 脚本

如果 classInfo 表格是按照 Demo 的样式保存的,输入 0 继续即可。如果不是……你改回来就可以。
完成后会生成一个 conf_classInfo.json 配置文件
4、运行 main.py 脚本

回车后,需要输入两个参数:第一周的星期一日期、提醒时间。
提醒时间就是在 iOS、Mac 上创建日历时所使用的设置,实测在Windows的outlook日历一样生效。
完成后在工作目录下会生成一个 class.ics 文件
5、导入手机或者电脑
如果你是 Mac + iOS, 恭喜你,直接点开 class.ics 就可以导入 Mac, 然后等待 iCloud 同步就可以。
如果想单独导入 iOS,可以用另外一个邮箱以添加附件的方式将 ics 发送到你的 iOS 可以收到的邮箱里,在邮箱内打开就可以。
我的设备是Windows+iPhone+iPad
我个人建议是添加到outlook日历里,然后在iOS端添加outlook账号,这样Windows对outlook的支持极其完善,不比apple的日历差,各种提醒非常及时(毕竟是亲儿子),然后在iOS端登陆outlook账号(其实就是微软账号),在日历里添加outlook日历。
这样不管是在手机还是平板还是电脑,都有提醒,不用怕忘记上课了