Tsukoつこ是一个 Python 项目,旨在自动化处理来自深圳技术大学(SZTU)公文通的通知信息。它能够抓取最新的通知,使用 AI 对通知进行分类和总结,并以友好的格式展示给用户。
- 通知抓取:从深圳技术大学官网(教务处、各学院等)抓取最新的通知列表。
- 增量更新:只抓取上次运行后发布的新通知,避免重复处理。
- 数据存储:将抓取到的通知数据(标题、链接、发布日期)保存在 CSV 文件中 (
data/gwt_data.csv)。 - AI 分类与总结:
- 使用 Google Gemini API 对抓取到的通知进行智能分类(例如:教学管理、科研项目、会议活动等)。
- 针对用户选择的特定通知,能够抓取其详细内容(标题、正文、附件)并生成内容摘要。
- 配置管理:通过
config.env文件管理必要的配置信息,如GEMINI_API_KEY和用户类型。 - 交互式配置:如果
config.env文件或其中的关键配置项缺失,程序会引导用户输入并自动保存。 - 格式化输出:将 AI 处理后的通知信息以清晰、易读的格式展示出来。
/Users/drc/Code/project/tsuko/
├── data/ # 存放数据文件
│ └── gwt_data.csv # 爬取的通知原始数据
│ └── response.txt # AI处理后的响应(旧版,可能已弃用)
├── src/ # 源代码目录
│ ├── main.py # 主程序入口,协调各模块工作
│ ├── gwt.py # 负责官网通知的抓取、数据处理和格式化输出
│ ├── ai_analyse.py # 负责与 Google Gemini API 交互,进行内容分类和总结
│ └── __pycache__/ # Python 编译的缓存文件
├── test/ # 测试代码目录
│ └── crawler.py # 用于测试爬虫和AI分析功能的脚本
├── res/ # 资源文件目录
│ └── prompt.txt # AI 模型的提示语(prompt)
│ └── prompt/
│ └── classify.txt # 分类任务的特定prompt
│ └── details_summary.txt # 详情总结任务的特定prompt
│ └── nyaa.txt # 猫娘模式的通用prompt
├── config.env # 配置文件 (需要用户自行创建或由程序引导创建)
└── README.md # 项目说明文件 (即本文档)
- Python 3.x
- pip (Python 包管理工具)
在项目根目录下,运行以下命令安装必要的 Python 库:
pip install requests beautifulsoup4 pandas python-dotenv google-generativeai项目需要使用 Google Gemini API。请按照以下步骤操作:
- 获取您的 Google Gemini API Key。
- 在项目根目录下创建(或等待程序引导创建)一个名为
config.env的文件。 - 在
config.env文件中添加以下内容,并将你的API密钥替换为您的真实 API Key:如果文件或配置项不存在,首次运行GEMINI_API_KEY=你的API密钥 USER_TYPE=1 # 用户类型,例如 1 代表本科生,具体含义见代码或提示 DAYS_TO_ANALYZE=2 # 分析最近几天的通知,默认为2
src/main.py时,程序会提示您输入。
python src/main.py程序将开始抓取新通知,进行 AI 分析,并输出结果。
可以运行 test/crawler.py 来单独测试爬虫或 AI 分析的特定功能。
python test/crawler.pysrc/main.py:- 程序的主入口。
- 负责初始化配置,调用
gwt.py中的函数获取和存储通知数据,然后调用ai_analyse.py中的函数进行 AI 处理,最后格式化并输出结果。
src/gwt.py:get_data_from_gwt(): 从官网爬取通知列表,进行增量更新,并将数据保存到gwt_data.csv。get_data_stored(): 从gwt_data.csv读取指定日期范围内的通知数据。get_page_details(url): 爬取指定 URL 页面的详细信息(标题、正文、附件)。format_gwt_list(): 将 AI 分类后的通知列表格式化为易读的文本。
src/ai_analyse.py:ai_classify(user_type, data): 调用 Gemini API 对输入的通知数据列表进行分类。ai_details_summary(data): 调用 Gemini API 对单个通知的详细内容进行总结。talk_with_mashiro(): (实验性功能) 提供一个与 AI 聊天的交互界面,可以调用已定义的工具函数。
- 请确保您的网络连接正常,以便访问深圳技术大学官网和 Google Gemini API。
- API Key 的保密性非常重要,请勿泄露。
- 爬虫的效率和稳定性可能受目标网站结构变化的影响。如果抓取失败,可能需要更新
gwt.py中的爬虫逻辑。 - AI 的输出质量取决于 prompt 的设计和模型的性能。
- 更精细化的通知分类。
- 支持更多学校或信息来源。
- 提供 Web 界面或桌面应用。
- 更智能的个性化通知推送。