diff --git a/.idea/CourseInformer.iml b/.idea/CourseInformer.iml index ad5b163..d29bcba 100644 --- a/.idea/CourseInformer.iml +++ b/.idea/CourseInformer.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..96db1f6 --- /dev/null +++ b/README.md @@ -0,0 +1,165 @@ +# 课程通知系统 (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. 克隆项目: +```bash +git clone +cd CourseInformer +``` + +2. 激活虚拟环境: +```bash +source .venv/bin/activate +``` + +3. 安装依赖: +```bash +pip install beautifulsoup4 requests +``` + +### 配置说明 + +#### 通知配置 (`notification_config.json`) +```json +{ + "server": { + "host": "192.168.12.1", // napcat服务器地址 + "port": 3000, // 端口 + "endpoint": "/send_private_msg" // napcat消息通知接口路径 + }, + "user": { + "uid": 2998813882 // 用户qq + } +} +``` + +#### 课程表文件 +将您的课程表保存为HTML格式,文件名为`教学安排表.xls`,放置在`resources/`目录下。 + +## 使用方法 + +### 运行系统 + +```bash +# 激活虚拟环境 +source .venv/bin/activate + +# 启动课程通知系统 +python main.py +``` + +### 测试功能 + +```bash +# 测试课程表解析 +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 +该项目仅供学习使用,请勿用于商业用途。 \ No newline at end of file