94 lines
2.0 KiB
Markdown
94 lines
2.0 KiB
Markdown
# 微信群聊消息采集器
|
||
|
||
自动扫描所有微信群聊,增量采集新消息,存入 MySQL,媒体文件上传腾讯 COS。
|
||
|
||
## 前置条件
|
||
0. 安装 wechat-cli
|
||
cd wechat-cli
|
||
pip install -e .
|
||
|
||
微信版本建议 4.1.6 或 4.1.8
|
||
|
||
1. **微信已登录** 且 `wechat-cli` 已初始化:
|
||
```bash
|
||
sudo wechat-cli init
|
||
```
|
||
|
||
2. **安装依赖**:
|
||
```bash
|
||
pip3 install pymysql cos-python-sdk-v5
|
||
```
|
||
|
||
## 快速启动
|
||
|
||
```bash
|
||
cd /Users/makee/Documents/cris/workspace/wechat-cli
|
||
|
||
# 查看所有群聊
|
||
python3 collect_chats.py groups
|
||
|
||
# 一次性扫描(测试用)
|
||
python3 collect_chats.py scan
|
||
|
||
# 守护模式(持续运行)
|
||
python3 collect_chats.py daemon
|
||
|
||
# 查看采集统计
|
||
python3 collect_chats.py status
|
||
|
||
# 停止采集某个群
|
||
python3 collect_chats.py disable "广告群"
|
||
|
||
# 恢复采集
|
||
python3 collect_chats.py enable "广告群"
|
||
```
|
||
|
||
## 扫描策略
|
||
|
||
采集器使用自适应频率扫描:
|
||
|
||
| 活跃度 | 条件 | 扫描间隔 |
|
||
|--------|------|----------|
|
||
| HOT | 最新消息 < 5 分钟 | 60 秒 |
|
||
| WARM | 最新消息 < 1 小时 | 5 分钟 |
|
||
| COLD | 无近期消息 | 逐步退避至 30 分钟 |
|
||
|
||
- 每轮最多扫描 5 个群,群间随机延迟 0~3 秒
|
||
- 每 5 分钟重新发现新群聊
|
||
- 支持白名单/黑名单过滤(正则匹配)
|
||
|
||
## 自定义配置
|
||
|
||
创建 `~/.wechat-cli/collect-chats/config.json`(可选,所有字段都有默认值):
|
||
|
||
```json
|
||
{
|
||
"min_interval": 60,
|
||
"base_interval": 300,
|
||
"max_interval": 1800,
|
||
"batch_size": 5,
|
||
"messages_per_scan": 200,
|
||
"whitelist": [],
|
||
"blacklist": ["广告群", ".*测试.*"]
|
||
}
|
||
```
|
||
|
||
## 数据存储
|
||
|
||
- **消息** → MySQL `vala_test.wechat_group_message` 表
|
||
- **媒体文件**(语音/视频/文件)→ 腾讯 COS `vala_llm/user_feedback/wechat/类型/YYYY-MM/`
|
||
- **图片** → 暂不采集(微信 V2 AES 加密限制)
|
||
|
||
## 后台运行
|
||
|
||
```bash
|
||
# nohup 方式
|
||
nohup python3 collect_chats.py daemon > collector.log 2>&1 &
|
||
|
||
# 查看日志
|
||
tail -f collector.log
|
||
|
||
# 停止
|
||
kill $(pgrep -f "collect_chats.py daemon")
|
||
```
|