SZTU 强智教务系统课程表转换为 ics 日历
理论上使用强智教务系统的学校都可以用(改个请求链接就行
Qi 通过解析教务系统网页版来获取课表,支持多种上课时间的描述方式
目前已知的描述方式形如
1-18双周
8,10,12,14,16双周
1-7,8-18
1-18
6
Copyright (c) 2020 0xJacky
Github 地址:https://github.com/0xJacky/Qi
说明
- Qi 支持手动维护的放假、补课安排,配置信息在
holiday.py
目前支持2020年国庆及中秋节放假、补课安排,欢迎通过提交 PR 补充假期安排 - 学号及密码仅用于请求教务系统
- ics 文件导入 iOS 日历,请将 ics 通过邮件发送到 iOS 设备上,通过系统自带的邮件 App 可以直接将日历导入,建议在导入前新建一个新的日历分区
- macOS 用户可以直接导入 ics 文件
使用方法
- 复制一份
config-default.ini
为config.ini
- 进入
config.ini
配置教务系统学号及密码 - 执行
python3 main.py
即可生成本学期课表
日历效果
捷径
捷径真的tql
下节什么课:https://www.icloud.com/shortcuts/b0ad41cb9ee348008b243e9597934dd0
今天有什么课:https://www.icloud.com/shortcuts/2de06382f8294b5289426f9874247928
下节课在哪上:https://www.icloud.com/shortcuts/86aa4fcaf4d449df930b0dc0e3effac5
新学期也要修复啊
@拉吉: 修复啥,不是正常获取吗
@Jacky: 500 Internal Server Error Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
报错捏
@拉吉: 教务系统的证书犯病了 晚点更新
@拉吉: 已修复
invalid literal for int() with base 10: ’17(‘
求救
@拉吉: 错误信息不全,不清楚呢,qi.jackyu.cn 能用?
@拉吉: v1.4.2 已修复
Traceback (most recent call last):
File “C:\Users\h1239\Documents\WeChat Files\wxid_0fv1mn877xxu22\FileStorage\File\2022-02\Qi-master(1)\Qi-master\qi-server\main.py”, line 10, in
sys.stdout = codecs.getwriter(“utf-8”)(sys.stdout.detach())
io.UnsupportedOperation: detach
这是什么问题!!!
求助!!!
@弱小: v1.4修复这个问题了
@Jacky: Project Qi 中点击获取课表然后显示:登录失败,请检查用户名密码
怎么办?
@弱小: 是sztu的同学吗,新教务登陆的进去吗
@Jacky: 是的,新教务可以登陆
@Jacky: 班级理论课表的解析是可以用的,获取ics日历不行
@弱小: 是在 qi.jackyu.cn 吗,ics日历获取不了有报什么错吗,我下学期没课,暂时测不了
@Jacky: 是的,它只显示了登陆失败,检查用户名密码。用main.py的话只是运行了一下,没有任何显示就退出了,没有发现有生成文件。
@弱小: 我的账号可以正常登录呀,如果是直接代码运行的话,看看最新版本 https://github.com/0xJacky/Qi
@Jacky: 我之前用的就是github上的代码,我再试试吧,谢谢你!
@弱小: main.py是服务端的,你要手动用cli.py,并提前配置账号密码
@Jacky: 嗯 前两天更新v1.4给大二和大三的测试过都可以登录,有问题再看看
@弱小: 那我一个大一的来的好像正好的样子哈哈
在用cil.py的时候重复 TimeouError: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
@弱小: 那就对了,现在不是我的锅,教务系统的DNS经常抽风,多试几次或者晚点再试就好了,老毛病了
@Jacky: 好的谢谢了!
@Jacky: 读了一下完整的代码后,我将auth3.py里的class Auth里面的ok=False改成ok=True之后,就可以成功生成了ics文件。
@弱小: 😂,虽然但是,self.ok 是为了判断是不是登录成功了…如果感兴趣的话不如解开 auth3.py 第54行的注释,看看报的错误是什么
@弱小: 好吧,感谢。我知道是什么问题了,用Cookie去实例化 Auth 对象之后忘记检查登录状态了,默认就返回了登录失败。
真不错