一个用于xzcit正方教务系统的用户脚本,可将课程表转换为ICS格式日历文件,支持实验课与理论课的统一导出。
- ✅ 将正方教务系统课程表转换为ICS日历格式
- ✅ 支持理论课和实验课的统一导出
- ✅ 自动检测并合并同一时间段多个实验地点的课程
- ✅ 支持自定义学期开始日期
- ✅ 生成符合标准的ICS文件,支持导入Google日历、Outlook等
- 理论课:直接使用原始地点格式(如"九里校区B02-217")
- 实验课:
- 日程地点:显示为"校区+Bxx-xxx"格式(如"九里校区B04-206、九里校区B05-203")
- 备注信息:显示实训室详细名称(如"自动包装实训室")
- 多地点合并:同一时间段多个地点合并为一个日程,地点间用顿号分隔
- 课程名称(实验课前缀标注"实验课-")
- 上课周次、星期、节次
- 上课地点(多个地点合并显示)
- 授课教师
- 实验课项目名称(如有)
Chrome/Edge/Opera: Tampermonkey
Firefox: Greasemonkey 或 Tampermonkey
Safari: Tampermonkey
- 点击此链接安装脚本:正方教务系统课程表转ICS.user.js
- 或者在Tampermonkey管理器中点击"添加新脚本",粘贴脚本代码保存
- 登录正方教务系统,进入"课程表查询"页面
- 页面右上角会出现"生成 ICS"按钮和学期开始日期选择框
- 确认学期开始日期(默认根据当前月份自动推算)
- 点击"生成 ICS"按钮
- 浏览器会自动下载ICS文件
- 将ICS文件导入到日历应用中:
- Google日历:左侧菜单 → 其他日历 → 导入
- Outlook:日历视图 → 添加日历 → 从文件
- macOS/iOS日历:双击ICS文件自动导入
- Windows日历:打开日历应用 → 设置 → 管理账户 → 添加账户 → 从文件
- 学期开始日期:请确保设置正确的学期第一周开始日期,否则周次可能错位
- 实验课处理:
- 同一实验在不同教室的课程会自动合并
- 日程地点显示教室编号,备注显示实训室名称
- 支持多个实验地点的合并显示
- 浏览器支持:建议使用最新版本的Chrome、Edge或Firefox
- 数据安全:所有数据处理均在本地浏览器完成,不会上传到任何服务器
text
├── 课程解析模块
│ ├── 理论课解析(基于Feldan/ZFClassTable2ICS项目)
│ ├── 实验课解析(新增功能)
│ └── 地点处理模块(统一格式化)
├── 时间处理模块
│ ├── 周次解析
│ ├── 节次时间映射
│ └── 学期日期计算
├── ICS生成模块
│ ├── 事件生成
│ ├── UID生成
│ └── 文件导出
└── UI注入模块
├── 按钮添加
└── 日期选择
- 课程解析:使用DOM操作提取课程信息,正则表达式解析时间地点字符串
- 地点格式化:统一提取校区和教室编号,实训室名称放入备注
- 多地点合并:使用Map数据结构合并相同时间段的课程
- ICS标准:遵循RFC 5545标准,包含必要的日历属性
本插件的理论课解析部分代码源于 Feldan/ZFClassTable2ICS 项目,特此致谢。
主要引用功能:
- 课程表DOM结构解析
- 周次、节次、时间解析
- 基本ICS文件生成框架
本插件新增功能:
- 实验课表格的识别与解析
- 多地点实验课的合并处理
- 地点信息的统一格式化
- 校区和实训室名称的智能提取
- 更完善的用户界面和日期选择
- 详细的调试日志和错误处理
- v1.2.4:支持日程地点显示多个地点
- v1.2.3:地点格式化,校区+教室编号显示
- v1.2.2:统一地点格式为Bxx-xxx
- v1.2.1:修复理论课地点显示问题
- v1.2.0:实验课多地点合并功能
- v1.1.9:初始版本,支持实验课和理论课导出
插件内置详细的控制台日志,可在浏览器开发者工具中查看:
- 课程解析过程
- 地点处理详情
- 事件生成信息
A: 当无法从地点字符串中提取到有效的教室编号时,会显示为"实验室"。请确保教务系统中地点信息格式正确。
A: 多个地点会用顿号连接显示在日程地点中,详细信息可在日程备注中查看。
A: 插件会根据当前月份自动推算(春季学期2月开学,秋季学期9月开学),建议手动确认是否正确。
A: 请检查学期开始日期设置是否正确。也可以查看生成的ICS文件中事件的具体日期。
MIT License
- Feldan/ZFClassTable2ICS - 理论课解析基础代码
如发现问题或有改进建议,欢迎提交Issue或Pull Request。