新增README文件
This commit is contained in:
2
.idea/CourseInformer.iml
generated
2
.idea/CourseInformer.iml
generated
@@ -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
165
README.md
Normal 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
|
||||||
|
该项目仅供学习使用,请勿用于商业用途。
|
||||||
Reference in New Issue
Block a user