English README click here
将zju本科生/研究生课程表转换为iCal日历格式,方便的导入到Windows/macOS/Linux/Android/Harmony OS/iOS/iPadOS/watchOS/Wear OS 上。
我们提供了两种可执行文件,zjuical
和zjuicalsrv
,两者功能相同,但是zjuical
是在本地运行,而zjuicalsrv
是在服务器上运行并提供web前端页面。
- 从release页面下载
- 一般不需要修改配置文件
- 使用
./zjuical -u [userId] -p [password]
来生成 - 也可以使用
./zjuical --help
来查看更多用法
-
从release页面下载
-
修改配置文件
configs/server.json
这里是字段的说明{ "enckey": "D*F-JaNdRgUkXp2s5v8y/B?E(H+KbPeS",//aes密钥(必须是128/192/256位bit) "host": "ical.zjueva.net", //你的服务器域名,会被用于生成ics文件的订阅链接 "port": 3000, //前端的web端口,必须是数字 "config": "configs/config.json", //配置文件路径,可以为空(默认是这个值) "http_proxy": "http://127.0.0.1:1081", //配置使用的代理,可以使用zju-connect "ip_header": "", //如果你的服务器是反向代理,需要填写这个字段,否则可以为空(默认是这个值) "redis_addr": "",// redis地址,用来缓存文件和限制ip,可以为空(默认不使用redis) "redis_pass": "" // redis密码,可以为空(默认无密码或不使用redis) "cache_ttl": 0 // 缓存时间,单位小时,可以为空(默认是0,即不缓存) }
-
使用
./zjuicalsrv
,打开host::port
就能看到前端页面了!
-
我们在configs文件夹下提供了三个配置文件:
upfile.json
,config.json
,server.json
-
upfile.json
用来配置用户名和密码,当然你可以手动输入 -
config.json
用来定义生成日历的内容,推荐不要进行修改,但如果你想生成其他日历内容,请按照如下规则修改:{ "lastUpdated": 20220913, //标识上一次修改日期,无实际意义 "tweaks": [ // zju 调休规则 { "TweakType": 2, //0:无条件清除From 到 To 日期的课程,1:复制From日期的课程 到 To日期,2:将From日期和To日期的课程对换 "Description": "[国庆节] 放假调休,课程对调", //显示的描述 "From": 20221006, //格式 YYYYMMDD "To": 20221008 }, ], "termConfigs": [ // 学期配置 { "Year": "2022-2023", "Term": 0, // see pkg/zjuservice/class.go for details "Begin": 20220912, "End": 20221106, "FirstWeekNo": 1 }, { "Year": "2022-2023", "Term": 1, "Begin": 20221107, "End": 20230111, "FirstWeekNo": 1 } ], "classTerms": [ // 希望查询的课程学期,必须在termConfigs中 "2022-2023:0",//see pkg/zjuservice/class.go for details "2022-2023:1" ], "examTerms": [ // 希望查询的考试学期,必须在termConfigs中 "2022-2023:0" //0是秋冬学期,1是春夏学期 ] }
-
server.json 用来配置服务器端,如果你想使用服务端,必须参考上面的配置说明
-
无论如何,请不要将配置文件移动到其他路径(路径是硬编码的!)
-
使用wx,qq等自带的浏览器打开会导致无法订阅与文件下载
-
iOS系统无法直接打开日历文件(在线版可以直接打开),需要发送文件到邮件APP中才能打开
-
iOS日历提示“验证失败”或“不安全的链接”,请在设置-蜂窝网络里检查是否禁止日历APP联网了
-
iOS上自动填充强密码会卡住,(当然需要使用自选密码),请在设置-密码-自动填充密码中关闭该功能
-
部分系统无法直接使用订阅链接,具体表现为点击订阅链接后没反应(包括不限于:华为鸿蒙,windows,氢OS),请使用导入文件方法
-
华为手机因导航键遮挡“导入”按钮,请在 设置-系统和更新-系统导航方式-屏内三键导航处-更多设置,打开“导航键可隐藏”后,即可正常导入文件
-
小组件不显示上课教室,因为小组件宽度高度问题没法显示教室是正常的,请使用更大的小组件(
-
调休可以正常显示,因为开发团队根据校历预支了调休(之前存在若干遗漏调休)
-
考试周居然还有课?之前逻辑存在遗漏,请参照第11条方法进行更新
-
国庆居然还上课?之前逻辑存在遗漏,已经更新,请参照第11条方法更新
-
如何接收后续日历更新:如果使用订阅方法,等待服务端48h缓存失效后即可自动同步最新的版本。如果使用导入文件方法,请在日历APP中删除之前导入的日历文件,重新导入即可
-
还在选课阶段的课程/未确认的课程不会正常显示
-
如何删除之前导入的日历/订阅?这个功能每个日历APP做的都不一样,请具体问题具体分析,打开日历APP-设置多摸索摸索,小编也不知道.jpg
-
研究生版有bug?研究生版本由于没有现成的接口,因此需要更大力气适配,还请各位担待
-
iOS点了下载/订阅按钮没反应?玄学问题,试试换个网/换个浏览器
该项目仅供学习交流使用,作者不对产生结果正确性与时效性做实时保证,使用者需自行承担因程序逻辑错误或课程时间变动导致的后果。
- 网页端请求全部走https,服务端保证不进行任何有关用户隐私的蓄意记录/收集行为
- 记录匿名日志供排查用户问题使用,日志定期删除
- 为了减少请求教务网的次数,减少被ban ip的概率,日历文件将被匿名缓存48h