Skip to content

LING71671/NUIST_Bulletin_Bot_PRO

Repository files navigation

NUIST Bulletin Bot PRO

Python Architecture ORM Playwright AI Powered License

这是一个用于自动获取南京信息工程大学 (NUIST) 校园网公告的 Python 工具。 它能够通过学校 VPN 访问内网通知,使用大模型生成摘要,并通过邮件等方式推送到用户端。


主要功能

  • 自动抓取:基于 Playwright 模拟登录,支持处理验证码和 VPN 跳转。
  • 内容摘要:调用 DeepSeek/通义千问等模型对公告内容(支持 PDF/Word/图片附件)进行摘要生成。
  • 消息推送:支持邮件(HTML 格式)、Webhook 等推送方式。
  • 并发处理:支持多线程扫描,提高抓取效率。
  • 数据管理:使用 SQLite + SQLAlchemy 管理数据,支持断点续传和去重。

快速开始

1. 克隆项目

git clone https://github.com/LING71671/NUIST_Bulletin_Bot_PRO.git
cd NUIST_Bulletin_Bot_PRO

2. 环境准备

推荐使用虚拟环境:

# Windows
python -m venv .venv
.\.venv\Scripts\activate

# Mac / Linux
python3 -m venv .venv
source .venv/bin/activate

3. 安装依赖

# 安装项目依赖
pip install -r requirements.txt
# 安装浏览器内核
playwright install chromium

配置说明

  1. 初始化配置: 将 config_sample.py 复制为 config.py

    # Windows
    copy config_sample.py config.py
    
    # Mac / Linux
    cp config_sample.py config.py
  2. 修改 config.py

    • SCHOOL: 填写学号和统一身份认证密码(用于登录学校 VPN)。
    • AI_KEYS: 填入 LLM 的 API Key(推荐 DeepSeek)。
    • NOTIFY: 配置邮件服务器 (SMTP)。
    • 群发名单: 在 data/receivers.txt 中按行填入收件人邮箱,程序将自动进行分批隐私保护推送。
    • SYSTEM: 可根据网络状况调整 MAX_WORKERS (并发数) 和 TIMEOUT

运行

方式 A:本地直接运行

# 启动主程序 (抓取 + 摘要 + 推送)
python main.py

# 历史数据回填 (仅抓取入库,不推送)
python backfill_history.py

方式 B:Docker 部署 (推荐)

使用 Docker 可以完美解决 Playwright 的浏览器依赖问题,且支持定时自动巡检。

  1. 准备配置:确保 config.py 已按需填写。

  2. 构建镜像

    docker-compose build
  3. 启动容器

    docker-compose up -d

    注:默认配置下,容器会每隔 10 分钟自动运行一次 main.py

  4. 查看日志

    docker-compose logs -f

Docker 常用运维命令

  • 停止服务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

About

大学公告栏信息推送助手(demo)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors