Skip to content

Jiale23/ConvertIcs-Script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Xzcit特供正方教务系统课程表转ICS插件

一个用于xzcit正方教务系统的用户脚本,可将课程表转换为ICS格式日历文件,支持实验课与理论课的统一导出。

功能特点

核心功能

  • ✅ 将正方教务系统课程表转换为ICS日历格式
  • ✅ 支持理论课和实验课的统一导出
  • ✅ 自动检测并合并同一时间段多个实验地点的课程
  • ✅ 支持自定义学期开始日期
  • ✅ 生成符合标准的ICS文件,支持导入Google日历、Outlook等

地点处理

  • 理论课:直接使用原始地点格式(如"九里校区B02-217")
  • 实验课
    • 日程地点:显示为"校区+Bxx-xxx"格式(如"九里校区B04-206、九里校区B05-203")
    • 备注信息:显示实训室详细名称(如"自动包装实训室")
    • 多地点合并:同一时间段多个地点合并为一个日程,地点间用顿号分隔

课程信息

  • 课程名称(实验课前缀标注"实验课-")
  • 上课周次、星期、节次
  • 上课地点(多个地点合并显示)
  • 授课教师
  • 实验课项目名称(如有)

安装方法

第一步:安装用户脚本管理器

Chrome/Edge/Opera: Tampermonkey

Firefox: GreasemonkeyTampermonkey

Safari: Tampermonkey

第二步:安装用户脚本

  1. 点击此链接安装脚本:正方教务系统课程表转ICS.user.js
  2. 或者在Tampermonkey管理器中点击"添加新脚本",粘贴脚本代码保存

使用方法

  1. 登录正方教务系统,进入"课程表查询"页面
  2. 页面右上角会出现"生成 ICS"按钮和学期开始日期选择框
  3. 确认学期开始日期(默认根据当前月份自动推算)
  4. 点击"生成 ICS"按钮
  5. 浏览器会自动下载ICS文件
  6. 将ICS文件导入到日历应用中:
    • Google日历:左侧菜单 → 其他日历 → 导入
    • Outlook:日历视图 → 添加日历 → 从文件
    • macOS/iOS日历:双击ICS文件自动导入
    • Windows日历:打开日历应用 → 设置 → 管理账户 → 添加账户 → 从文件

注意事项

  1. 学期开始日期:请确保设置正确的学期第一周开始日期,否则周次可能错位
  2. 实验课处理
    • 同一实验在不同教室的课程会自动合并
    • 日程地点显示教室编号,备注显示实训室名称
    • 支持多个实验地点的合并显示
  3. 浏览器支持:建议使用最新版本的Chrome、Edge或Firefox
  4. 数据安全:所有数据处理均在本地浏览器完成,不会上传到任何服务器

代码说明

项目结构

text

├── 课程解析模块
│   ├── 理论课解析(基于Feldan/ZFClassTable2ICS项目)
│   ├── 实验课解析(新增功能)
│   └── 地点处理模块(统一格式化)
├── 时间处理模块
│   ├── 周次解析
│   ├── 节次时间映射
│   └── 学期日期计算
├── ICS生成模块
│   ├── 事件生成
│   ├── UID生成
│   └── 文件导出
└── UI注入模块
    ├── 按钮添加
    └── 日期选择

技术实现

  1. 课程解析:使用DOM操作提取课程信息,正则表达式解析时间地点字符串
  2. 地点格式化:统一提取校区和教室编号,实训室名称放入备注
  3. 多地点合并:使用Map数据结构合并相同时间段的课程
  4. 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:初始版本,支持实验课和理论课导出

调试信息

插件内置详细的控制台日志,可在浏览器开发者工具中查看:

  • 课程解析过程
  • 地点处理详情
  • 事件生成信息

常见问题

Q: 为什么有些实验课显示为"实验室"?

A: 当无法从地点字符串中提取到有效的教室编号时,会显示为"实验室"。请确保教务系统中地点信息格式正确。

Q: 多地点合并后,在日历中如何显示?

A: 多个地点会用顿号连接显示在日程地点中,详细信息可在日程备注中查看。

Q: 学期开始日期如何确定?

A: 插件会根据当前月份自动推算(春季学期2月开学,秋季学期9月开学),建议手动确认是否正确。

Q: 为什么导入的课程时间与实际不符?

A: 请检查学期开始日期设置是否正确。也可以查看生成的ICS文件中事件的具体日期。

许可证

MIT License

致谢

反馈与贡献

如发现问题或有改进建议,欢迎提交Issue或Pull Request。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors