Initial commit: WeChat bot project with AI chat, video export, and image upload scripts

This commit is contained in:
anqiang12
2026-06-18 15:53:24 +08:00
commit 3b1e106cb0
16 changed files with 2541 additions and 0 deletions

215
VIDEO_EXPORT_SUMMARY.md Normal file
View File

@@ -0,0 +1,215 @@
# 视频导出功能实现总结
## 已完成的工作
### 1. 创建 `video_cutter.py` 模块
**功能**
- 解析图片名,提取视频名和时间点
- 根据视频名找到原始视频文件
- 使用 ffmpeg 切割视频
- 支持4种导出模式around/after/before/total
**核心函数**
- `parse_image_info(image_name)` - 解析图片名
- `find_video_file(video_name)` - 查找视频文件
- `get_video_duration(video_path)` - 获取视频时长
- `cut_video(video_path, start_time, end_time, output_path)` - 切割视频
- `export_video_clip(image_name, mode, minutes)` - 导出视频片段
### 2. 修改 `chat_bot.py`
**添加内容**
-`tool_list` 中添加 `export_video` 工具
-`test_openai` 中添加工具定义(包含参数说明)
-`sen_mess` 方法中添加处理逻辑
**工具定义**
```python
{
"name": "export_video",
"description": "当用户确认某张图片并要求导出视频时调用此工具",
"parameters": {
"image_name": "图片文件名",
"mode": "around/after/before/total",
"minutes": "分钟数默认5"
}
}
```
### 3. 修改 `weixin_sender.py`
**添加内容**
-`weix` 类中添加 `send_video` 方法
- 当前实现:发送文字提示(视频已保存到服务器)
- 后续可扩展:直接发送视频文件
### 4. 创建测试和文档
**测试文件**
- `test_video_export.py` - 完整测试脚本
**文档文件**
- `INSTALL_FFMPEG.md` - ffmpeg 安装说明
- `VIDEO_EXPORT_README.md` - 使用说明文档
- `VIDEO_EXPORT_SUMMARY.md` - 本文件
**更新文件**
- `CLAUDE.md` - 添加视频导出功能说明
## 用户交互流程
### 场景1前后5分钟
```
用户:找一下猫和老鼠里汤姆追杰瑞的场景
AI发送相似图片
用户第一张图不错给我前后5分钟的视频
AI✅ 视频已导出!
📁 文件名001 Puss Gets the Boot [1940]_03m23s-07m23s.mp4
📂 保存位置:./export_videos/...
⏱️ 时间范围03m23s -> 07m23s
🎬 时长04m00s
```
### 场景2后面5分钟
```
用户这张图后面的5分钟视频给我
AI调用 export_videomode="after", minutes=5
```
### 场景3整个视频
```
用户:我要整个视频
AI调用 export_videomode="total"
```
## 文件结构
```
/home/hasee/py/
├── video_cutter.py # 视频切割导出模块(新增)
├── chat_bot.py # 聊天机器人(已修改)
├── weixin_sender.py # 微信发送模块(已修改)
├── test_video_export.py # 测试脚本(新增)
├── INSTALL_FFMPEG.md # 安装说明(新增)
├── VIDEO_EXPORT_README.md # 使用说明(新增)
├── VIDEO_EXPORT_SUMMARY.md # 本文件(新增)
├── CLAUDE.md # 项目说明(已更新)
├── shipin/ # 原始视频目录
│ ├── 001 Puss Gets the Boot [1940].avi
│ ├── 001 Puss Gets the Boot [1940]_frames/
│ └── ...
└── export_videos/ # 导出视频目录(自动创建)
```
## 依赖要求
### Python 依赖
已包含在 `requirements.txt` 中,无需额外安装。
### 系统依赖
需要安装 ffmpeg
```bash
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
```
## 测试方法
### 1. 测试解析功能
```bash
python video_cutter.py
```
输出示例:
```
=== 测试图片名解析 ===
001 Puss Gets the Boot [1940]_05m23s_456.jpg
-> {'video_name': '001 Puss Gets the Boot [1940]', 'timestamp_seconds': 323.456}
```
### 2. 运行完整测试
```bash
python test_video_export.py
```
测试内容:
1. 图片名解析功能
2. 视频文件查找功能
3. 视频导出功能(需要 ffmpeg 和视频文件)
## 配置参数
`video_cutter.py` 中可以修改:
```python
VIDEO_DIR = "./shipin" # 原始视频目录
EXPORT_DIR = "./export_videos" # 导出视频目录
VIDEO_EXTENSIONS = {'.avi', '.mp4', '.mkv', '.mov', '.flv', '.wmv', '.webm', '.ts', '.m4v'}
```
## 注意事项
1. **ffmpeg 必须安装**
- 视频切割依赖 ffmpeg
- 请参考 `INSTALL_FFMPEG.md` 安装
2. **视频文件位置**
- 原始视频必须在 `./shipin/` 目录下
- 视频名必须与图片名中的视频名一致
3. **图片名格式**
- 必须符合:`{视频名}_{分钟}m{秒}s_{毫秒}.jpg`
- 例如:`001 Puss Gets the Boot [1940]_05m23s_456.jpg`
4. **切割精度**
- 使用 `-c copy` 参数,不重新编码
- 切割点可能不精确(取决于关键帧位置)
5. **存储空间**
- 导出的视频会占用额外空间
- 建议定期清理 `export_videos` 目录
## 后续扩展
### 1. 直接发送视频文件
修改 `weixin_sender.py` 中的 `send_video` 方法,实现视频文件上传和发送。
### 2. 自定义切割精度
添加参数控制切割精度(精确到帧或秒)。
### 3. 批量导出
支持一次导出多个视频片段。
### 4. 进度提示
在切割过程中发送进度提示给用户。
### 5. 视频格式转换
支持导出不同格式的视频MP4, AVI, MKV 等)。
## 技术支持
如有问题,请检查:
1. ffmpeg 是否正确安装
2. 视频文件是否存在
3. 图片名格式是否正确
4. 磁盘空间是否充足
详细说明请参考 `VIDEO_EXPORT_README.md`