这是一个用于自动获取南京信息工程大学 (NUIST) 校园网公告的 Python 工具。 它能够通过学校 VPN 访问内网通知,使用大模型生成摘要,并通过邮件等方式推送到用户端。
- 自动抓取:基于 Playwright 模拟登录,支持处理验证码和 VPN 跳转。
- 内容摘要:调用 DeepSeek/通义千问等模型对公告内容(支持 PDF/Word/图片附件)进行摘要生成。
- 消息推送:支持邮件(HTML 格式)、Webhook 等推送方式。
- 并发处理:支持多线程扫描,提高抓取效率。
- 数据管理:使用 SQLite + SQLAlchemy 管理数据,支持断点续传和去重。
git clone https://github.com/LING71671/NUIST_Bulletin_Bot_PRO.git
cd NUIST_Bulletin_Bot_PRO推荐使用虚拟环境:
# Windows
python -m venv .venv
.\.venv\Scripts\activate
# Mac / Linux
python3 -m venv .venv
source .venv/bin/activate# 安装项目依赖
pip install -r requirements.txt
# 安装浏览器内核
playwright install chromium-
初始化配置: 将
config_sample.py复制为config.py。# Windows copy config_sample.py config.py # Mac / Linux cp config_sample.py config.py
-
修改
config.py:- SCHOOL: 填写学号和统一身份认证密码(用于登录学校 VPN)。
- AI_KEYS: 填入 LLM 的 API Key(推荐 DeepSeek)。
- NOTIFY: 配置邮件服务器 (SMTP)。
- 群发名单: 在
data/receivers.txt中按行填入收件人邮箱,程序将自动进行分批隐私保护推送。 - SYSTEM: 可根据网络状况调整
MAX_WORKERS(并发数) 和TIMEOUT。
# 启动主程序 (抓取 + 摘要 + 推送)
python main.py
# 历史数据回填 (仅抓取入库,不推送)
python backfill_history.py使用 Docker 可以完美解决 Playwright 的浏览器依赖问题,且支持定时自动巡检。
-
准备配置:确保
config.py已按需填写。 -
构建镜像:
docker-compose build
-
启动容器:
docker-compose up -d
注:默认配置下,容器会每隔 10 分钟自动运行一次
main.py。 -
查看日志:
docker-compose logs -f
- 停止服务:
docker-compose down - 更新代码后重启:
# 重新构建镜像并重启容器 docker-compose up -d --build - 在容器内运行其他脚本 (如历史回填):
docker-compose exec bot python backfill_history.py
.
├── ai_brain/ # AI 摘要核心逻辑
├── auth/ # 学校账号登录与 Cookie 管理
├── data/ # 数据库模型与存储目录
├── notify/ # 消息推送模块
├── spider/ # 公告抓取与 URL 解析
├── utils/ # 日志与工具函数
├── main.py # 主程序入口
└── docker-compose.yml # Docker 编排配置
本项目采用 GPL-3.0 协议。 Copyright (c) 2026 LING71671