# 集美大学诚毅学院小爱课程表导入脚本 **Repository Path**: xmprocat/CY_AISchedule ## Basic Information - **Project Name**: 集美大学诚毅学院小爱课程表导入脚本 - **Description**: 集美大学诚毅学院小爱课程表导入脚本,仅供参考 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-03 - **Last Updated**: 2022-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **集美大学诚毅学院小爱课程表导入脚本** ![诚毅LOGO](https://img.yejiah.com/pubLogo/jmu_CY_SchoolNameWithLogo.jpg!halfsize "集美大学诚毅学院校徽") ## 零、使用说明 截止本文件编写时,集美大学已经将课程表迁移至新教务系统(请查看new文件夹),集美大学诚毅学院请使用旧教务系统的处理脚本 **使用说明请参考** https://blog.csdn.net/u011493046/article/details/122567874 如果你想知道这是怎么工作的请往下看 ## 一、文件结构说明 schedule_provider.js 内含scheduleHtmlProvider函数,用于输出HTML字符串。 schedule_parser.js 内含scheduleHtmlParser函数用于提取课程信息,按约定的格式输出课程信息。 schedule_timer.js 新增了scheduleTimer函数来替代原先parser中的sectionTimes,提供了更加丰富的自定义内容,用于配置上课时间等信息 new文件夹 新教务系统的适配 ## 二、参考资料 官方的开发文档: > https://ldtu0m3md0.feishu.cn/docs/doccnhZPl8KnswEthRXUz8ivnhb > https://lacus.site/2021/12/ai-schedule/ 小爱课程表导入课程表功能开发(正方教务系统): > https://blog.csdn.net/weixin_43723877/article/details/108667994 SZTU深圳技术大学教务系统小爱课程表导入——强智科技 > https://blog.csdn.net/qq_38331169/article/details/108500577 ## 三、处理思路 ### schedule_provider.js 拿开发者工具框一下元素提取。 ![页面元素检查](https://img.yejiah.com/blog_md_pic/jmuAISchedule/20220125155411.png) 其中提取页面课表元素的关键语句如下: ``` dom.querySelector('#mainFrame').contentWindow.document.querySelector('#aspnetForm').innerHTML ``` ### schedule_parser.js 接下来要做的就是根据课表的结构编写数据解析&转换函数,最后按指定格式返回就行了 **注意:Parser函数里不能使用document和window对象,因为这部分是在服务端解析的,用到了cheerio的环境** 通过判断“★”就能知道有没有课,有几节课 ``` .... if (CellData.search('★') != -1) { CourseParser(CellData, Row, Column); } .... ``` **以下给出部分课程在单元格内的形式(已脱敏处理)** > ★嵌入式系统原理及其应用 诚毅7-403 XXX 4-16★Linux操作系统与实践[网胜] 诚毅14-609 XXX 3-16 接下来利用空格对字符串进行分割就可以得到具体的课程信息 ### schedule_timer.js 参考如下信息编写课程时间配置(其实是一样的) > 诚毅作息 http://cyjwb.jmu.edu.cn/info/1037/1562.htm > 集大作息 http://jwc.jmu.edu.cn/sksj.htm ## 四、已知问题 1、部分专业可能会有多个方向,会将多个专业的课程写在同一张课表。这会导致同一个上课时间要上多门课,会被小爱的后台直接拒绝这个课程表。所以如果发现上课时间冲突,会将上课的周数放在20周之后,请手动进行微调。 **对你有帮助的话请点个star哦**