新增README文件

This commit is contained in:
2025-08-20 11:16:40 +08:00
parent 074a2ee56c
commit bf0c0a505c
2 changed files with 166 additions and 1 deletions

View File

@@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" /> <excludeFolder url="file://$MODULE_DIR$/.venv" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.13 (ClassInfoPublisher)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.13 virtualenv at ~/PycharmProjects/CourseInformer/.venv" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

165
README.md Normal file
View File

@@ -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 <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
# 激活虚拟环境
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
该项目仅供学习使用,请勿用于商业用途。