个人适配WakeUP学校教务课表记录
开头情景
第一次使用 WakeUp 课程表时,我想使用教务系统导入课程表,但发现自己的学校没有适配教务系统。尝试使用通用教务系统导入后,发现部分课程没有导入,信息也比较混乱,所以我决定自己动手进行适配,但是我并不会写Kotlin代码,当时时间比较紧,就使用AI完成了这个适配,而且效果还不错。
第一步,我们前往 WakeUp 官方提供的适配器仓库 YZune/CourseAdapter,了解适配的基本原理和结构。
适配器代码分析
适配器的核心是解析教务系统网页的 HTML 源码,提取出课程信息,并将其转换为 WakeUp App 所要求的标准格式。下面我将以我为武汉船舶职业技术学院(基于学校的金智教务系统)编写的适配器为例。
1. 核心解析器:WISTParser.kt
这个文件是整个适配器的灵魂,它负责从原始的 HTML 文本中提取、清洗和组织课程数据。
主要特性
在开始分析代码前,先看一下这个解析器实现了哪些功能:
- 自动清洗周次:支持 “单周”、”双周”、”X-X周” 等复杂格式。
- 智能合并课程:将同一门课程在不同时间点的记录合并。
- 合并连续节次:自动将 3-4 节这样的连续课程合并为一个条目。
- 结构化数据输出:生成标准的课程列表,包含所有必要信息。