NOTE

Image bymarikomodo from Pixabay

关于拾光课程表

拾光课程表是一款面向中国高校师生的课程表管理工具,支持通过适配脚本导入各类教务系统课程数据,方便用户高效管理个人课表。项目注重开放性和可扩展性,鼓励社区开发者参与适配和功能完善。

仓库:https://github.com/XingHeYuZhuan/shiguangschedule

这几天冲浪强度有点高,发现了这个仓库,使用了一下,觉得不错。最吸引我的是它有桌面Widget功能,可以在桌面显示课表。考虑到WakeUp课程表属于闭源软件,最近它吃饭有点猛,空间占用还不小(>200MB 拾光20MB),我决定尝试一下拾光课程表。

使用中的问题

这个项目是初创阶段,我发现他们还没有做我们学校的适配,在失望的同时又暗爽:说不定我可以做一下,交个PR还可以提升一下我的开源地位。

其他倒没有什么,整个软件设计得就十分顺手,必须给到人上人!不是夯的话,主要是门槛对于一般人来说有点高。

开发群里面有80个人,来自全国各地。这个软件虽然受众广,但是毕竟是放到了GitHub,这种流量低得可怕的地方,用户规模自然是不行的。

看了一下聊天记录,开发者们谈到了为什么不使用AI做适配:

A: 哎,现在都流行 ai 导入了,纯人工适配实在是降维打击,恐怕只有轻量化是唯一的优点了

B: ai真信不过

A: 而且我说的不是适配用 ai,这种商业项目可能很容易接入,只要能登录进教务用 ai 应该很容易爬取数据

C:会变得不可控,鬼知道从后门偷偷爬什么数据

群主:放个ai页面导入也可以 不过维护是个问题 而且我们无法提供免费的api 供给导入。只能让其他人输入api,这个页面可以做,但是我做不好就是了 让其他开发者提交页面吧。


不过都是小事,但是对那些不喜欢手动适配的人,确实是个大问题。

我的观点是:就算使用AI适配,能做到精确性吗?即使是用OCR,token也是个问题,为了使用一个软件去绕一堆圈子,对普通用户来说,真的合适吗?现有模式(人工适配)也有很大的局限性,开发者没有做适配,那个学校基本上就没有用户。

不过采用人工适配确实也不错,可以给大家增加开源贡献,完成后的脚本还能保证数据的准确性和安全性,且每个脚本还有对应的维护者。缺点也很明显:很慢以及看运气。


CUIT适配过程

根据官方文档来做的,每一步都很详细,文档这一块必须点赞拾光!

CUIT有两个教务,一个旧的,使用古早框架;一个是新的,框架我不了解,但是功能上更专一点,可以看到实验课。目前大家主要还是在用旧的。

原本我采用的是HTML解析,但是在实际到了Android测试时,发现古网站加载不出来,于是转到新教务,临到合并PR时,才发现脚本解析有错,赶紧转Draft。

owner告诉我调API是个不错的方式,我开始研究调用。

新网站API

我发现有一个GET请求可以直接获取学生的基本信息,另一个POST请求会使用这些信息去请求课程数据,我笑了,人直接返回json数据,解析一下就能用。那我去解析HTML干什么?!

我真傻,真的,我单知道相信自己看到的,而不是深挖。

就这样,新网站的适配完成得非常顺利。

旧网站API

我找了很久的数据,最后发现有个POST请求返回了一堆JavaScript,我超,真的假的,居然返回JavaScript,课程数据就在这里面,还得使用正则提取,不过脚本可不是我手写的……无非多花一点时间在AI Chat上。

旧网站的POST请求头我没看懂是什么东西,好像也有个GET请求,最后还是用脚本解析网站上的数据,最后构造请求头,POST一下,再解析得到的数据,最后大功告成!


总结

最后脚本的适配完成,维护者自然成了我,但是最近系统更新快,不知道以后会不会有什么更多的问题,我到时候可能没有精力去做,只能寄希望与后人。

alt text

脚本适配完成,CUIT的用户就可以使用拾光课程表了,而我的昵称和头像自然也可以出现在贡献者列表里面了,Win!

以后简历上也可以写一个贡献者,展示一下自己的开源贡献,从此,吹牛都有了几分底气。

BreakApple