今天学校公布了我们下学期的课程表。唉,没想到大三的课程表居然比大二还多!好吧,我也只能乖乖地把课程表整理下,一起导入到日历里。

其实 App Store 里课程表的应用并不少,各个学校也可能有自己的教务系统爬下来做出来的课程助手,所以管理课程这件事并不是难事。但是谁叫我生来(才怪)就是不喜欢这样一些乱七八糟功能堆积的 App,反而享受做出符合自己需求的玩意儿。所以别企图用 XX 课程助手这样的应用来搞定我。

将课程表导入到日历管理的好处十分明显:

  • 统一管理。将课程和其他安排统一管理,方便安排和查看
  • 节省空间。在 Widget 里只需要留一个日历插件,就能一目了然
  • 足够装X。嗯……是的。

于是我写了一个将课程导入日历的 Python 脚本,这个脚本是我一年前写的,一直想分享但是一直找不到点拿出来分享,今天心情好(才怪),觉得是时候分享了~下面是使用说明。

脚本概要

Demo下载

程序总共由两个脚本完成,最后将 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 2.7+

执行详解

1、配置 classInfo Excel 表格
在工作目录下创建一个 classInfo Excel 表格,表格表头有如下参数:
className:课程名称
startWeek:起始周
endWeek:结束周
weekday:星期
classTime:第几节。这个参数要配合 conf_classTime.json 文件,下文会讲。
classroom:教室

2、配置 conf_classTime.json
来吧,照猫画虎:

{
  "classTime": [
    {
        "name":"第 1、2 节",
        "startTime":"0830",
        "endTime":"1005"
    },
    {
        "name":"第 3、4 节",
        "startTime":"1025",
        "endTime":"1200"
    },
    {
        "name":"第 5、6、7 节",
        "startTime":"1350",
        "endTime":"1615"
    },
    {
        "name":"第 8、9 节",
        "startTime":"1630",
        "endTime":"1800"
    },
    {
        "name":"第 10、11、12 节",
        "startTime":"1830",
        "endTime":"2100"
    }
  ]
}

3、运行 excelReader.py 脚本
终端运行:
python excelReader.py


如果 classInfo 表格是按照 Demo 的样式保存的,输入 0 继续即可。如果不是……你改回来就可以。(一个小脚本而已,懒得做那么多容错啦~)
完成后生成一个 conf_classInfo.json 配置文件

4、运行 main.py 脚本
终端运行:
python main.py

回车后,需要输入两个参数:第一周的星期一日期、提醒时间。
提醒时间就是在 iOS、Mac 上创建日历时所使用的设置,不知道这样的设置在 Android 和 Windows 是否生效。待测。
完成后在工作目录下会生成一个 class.ics 文件

5、导入手机或者电脑

如果你是 Mac + iOS, 恭喜你,直接点开 class.ics 就可以导入 Mac, 然后等待 iCloud 同步就可以。

如果想单独导入 iOS,可以用邮件将 ics 发送到你的 iOS 可以收到的邮箱里,在邮箱内打开就可以。

Android 和 Windows 的导入方法我没试过,不过我觉得应该和 iOS、Mac 差不多的。

写在最后

复习,准备考试。各位大学狗,渣油。