Files
CourseInformer/README.md

164 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 课程通知系统 (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 <repository-url>
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
# 从requirements.txt中下载对应库
pip install -r requirements.txt
# 启动课程通知系统
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
该项目仅供学习使用,请勿用于商业用途。