Files
CourseInformer/README.md

4.0 KiB
Raw Permalink Blame History

课程通知系统 (CourseInformer)

一个自动读取课程表并按时发送课程提醒的Python应用程序。适用于华北水利水电大学教务系统导出的课程表其他院校未经测试。

前排提醒: 该README由ClaudeCode生成

项目简介

课程通知系统是一个智能提醒工具,能够解析课程安排表文件,根据课程时间自动发送上课提醒。系统会持续运行并监控课程安排,在适当的时机(上课前)发送通知,帮助学生不会错过任何一节课。

功能特点

  • 自动解析课程表从HTML格式的课程安排表中提取课程信息
  • 智能提醒机制:根据课程时间自动计算并发送提醒
  • 灵活的时间配置
    • 第一节课上课前1小时提醒07:00发送
    • 第六节课上课前1小时提醒13:00发送
    • 第十一节课下课后立即提醒18:30发送
    • 其他课程上课前10分钟提醒
  • 持续监控系统持续运行每30秒检查一次课程安排
  • 多格式支持:支持多种课程时间格式解析

技术架构

CourseInformer/
├── main.py          # 主程序,控制整体流程
├── reader.py        # 课程表解析器
├── informer.py      # 通知发送模块
├── notification_config.json  # 通知配置文件
└── resources/
    └── 教学安排表.xls  # 课程表数据文件HTML格式

核心组件

  1. Reader模块 (reader.py)

    • 使用BeautifulSoup解析HTML格式的课程表
    • 提取学生信息和课程安排
    • 支持解析复杂的课程时间格式
  2. Main模块 (main.py)

    • 计算当前周数和星期
    • 判断课程是否需要发送提醒
    • 控制提醒发送时机
    • 持续监控课程安排
  3. Informer模块 (informer.py)

    • 构造提醒消息格式
    • 通过HTTP请求发送通知
    • 支持配置化的通知服务器

安装与配置

环境要求

  • Python 3.7+
  • 依赖包:beautifulsoup4, requests

安装步骤

  1. 克隆项目:
git clone <repository-url>
cd CourseInformer
  1. 激活虚拟环境:
source .venv/bin/activate
  1. 安装依赖:
pip install beautifulsoup4 requests

配置说明

通知配置 (notification_config.json)

{
    "server": {
        "host": "192.168.12.1",     // napcat服务器地址
        "port": 3000,              // 端口
        "endpoint": "/send_private_msg"  // napcat消息通知接口路径
    },
    "user": {
        "uid": 2998813882          // 用户qq
    }
}

课程表文件

将您的课程表保存为HTML格式文件名为教学安排表.xls,放置在resources/目录下。

使用方法

运行系统

# 从requirements.txt中下载对应库
pip install -r requirements.txt
# 启动课程通知系统
python main.py

测试功能

# 测试课程表解析
python reader.py

# 测试通知发送
python informer.py

课程时间安排

系统内置了标准的课程时间安排:

上午

  • 第一节08:00 - 08:45
  • 第二节08:55 - 09:40
  • 第三节09:55 - 10:40
  • 第四节10:50 - 11:35
  • 第五节11:45 - 12:30

下午

  • 第六节14:00 - 14:45
  • 第七节14:55 - 15:40
  • 第八节15:55 - 16:40
  • 第九节16:50 - 17:35
  • 第十节17:45 - 18:30

晚上

  • 第十一节19:00 - 19:45
  • 第十二节19:55 - 20:40

开发说明

项目结构

  • dataclass对象用于数据建模
  • 模块化设计,职责分离
  • 异常处理机制完善
  • 支持测试模式

扩展开发

  1. 添加新的通知渠道(邮件、短信等)
  2. 支持更多课程表格式
  3. 增加Web界面管理
  4. 添加课程冲突检测

注意事项

  1. 系统默认学期开始日期为2025年8月25日
  2. 课程表文件需要保存为GBK编码的HTML格式
  3. 通知服务器需要提前配置并运行
  4. 系统会持续运行,建议在后台运行或使用进程管理工具

License

该项目仅供学习使用,请勿用于商业用途。