/lesson2cal

Convert course schedule into a .ics file for SJTU ElectSys (i.sjtu.edu.cn)

Primary LanguagePython

Lesson2Cal: SJTU ElectSys课程表日历生成器

解析教学信息服务网页面,生成.ics文件(可导入Outlook、Google Calendar等多种日历服务)

目前使用网页作为前端(Vue.js & Element UI);欢迎贡献其他前端!

使用中遇到问题,或有意见或建议,可在Issue中提出。

Install

对于Windows用户,可以直接在Release页面 下载程序包,解压后双击lesson2cal.exe即可启动。注意,Release版本可能不会包括最新的功能。

如手动安装,请确保已安装Python 3.4或以上版本,且pip可用。下载本项目文件后执行以下语句安装依赖:

pip install -r requirements.txt

Usage

运行./server.py,浏览器将自动打开页面,默认地址为http://localhost:5000/。 输入相关信息后,如果顺利,页面将生成一output.ics文件。 该文件为文本文件,在导入之前,如有需要可进行编辑。 一个事件的形式如下:

BEGIN:VEVENT
SUMMARY:事件名称
DTSTART:20180910T080000
DTEND:20180910T094000
RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=16
END:VEVENT

SUMMARY为事件的标题,DTSTARTDTEND分别为首次事件开始、结束的日期与时间; 另有LOCATIONDESCRIPTION字段可选添加; RRULE控制事件的重复,可借助RRULE Tool生成。

Options

目前提供两个一个可配置项。

关于地点显示:

  • 课程名称@地点(默认):地点显示在标题中,与超级课程表风格类似,对Outlook的Android Widget友好;
  • 地点独立显示:地点出现在专用的LOCATION字段中,但是Outlook的Android Widget不显示;

关于备注的处理:已经废弃,用户界面接口尚未删除

  • 教务处表示以后开学两周内任课老师可以改上课地点
  • 教务处还说形策会做分周显示,但是现在还看不到到底会怎么做

发行

采用cx_Freeze进行打包。这个包不在requirements.txt中,如有需求请安装cx-freeze

  • 打包请执行python3 setup.py build,产物在build/
  • 目前不支持Python 3.7,如有更新强迫受害者请自行解决(x)
  • 目前没有解决相对路径问题,所以请一定在lesson2cal.exe所在目录中直接运行
  • 该脚本可以进行macOS上的打包,还可以用bdist_dmg命令生成dmg文件,但是路径和程序的生命周期不可控所以不可用

Known Issues

  • 本程序不会储存或上传你的jAccount密码,使用时可善用浏览器的记住密码功能;
  • 密码在前端后端之间明文传输,且线程不安全(共享manager)、未作CSRF防御,故仅供本地使用,不宜用作公网服务;
  • 为了您的账户安全,请谨慎使用他人的部署;

Disclaimer

存在解析错误的可能性,具体课表请以ElectSys为准。任何错误引起的不良后果,开发者恕不承担。