# 下载视频

## 下载视频

#### **方式一：主页批量下载（推荐）⭐**

1. 打开微信视频号的个人主页（非详情页）
2. 程序会自动采集页面上所有视频信息
3. 页面右上角会显示"已采集 X 个视频"和操作按钮：
   * **📝 编辑选择**: 展开选择列表，可勾选需要下载的视频
   * **🔄 前后端批量下载**: 两种下载方式（详见下方说明）
   * **🤖 去重下载**: 下载的视频去重只有后端下载生效，前端下载没有去重功能
   * **📋 导出链接**: 支持 TXT/JSON/Markdown 三种格式导出

##### 选择下载功能

点击"📝 编辑选择"后，会展开视频选择列表：
- 每项显示：标题、封面、创建时间、时长、大小
- 可勾选需要下载的视频
- 支持"仅选中-前端下载"或"仅选中-后端下载"
- 支持"取消"操作，可即时停止下载

##### 前端下载 vs 后端下载

**前端下载**：
- 在浏览器中直接下载和解密
- 使用分片上传技术，大文件更稳定
- 可见实时下载进度
- 支持取消操作（AbortController）
- **不支持去重功能**

**后端下载**：
- 由后端服务并发下载
- 支持去重（按 ID 或 URL）
- 支持失败重试机制
- 支持查看下载进度（total/done/failed/running）
- 支持导出失败清单
- 支持强制重新下载选项

##### 批量下载流程

点击"批量下载"后，程序会：
- 自动下载并解密所有视频（或选中的视频）
- 按作者名创建文件夹分类存储
- 文件名自动添加发布时间前缀（如：`20251016_232348_视频标题.mp4`）
- 实时显示下载进度（如：`进度: 5/15`）
- 最后显示成功/失败统计

**特点**：

* ✅ 适合批量下载某个作者的所有视频
* ✅ 自动分类存储，文件管理更方便
* ✅ 自动解密，视频可直接播放
* ✅ 分片上传技术，大文件下载更稳定
* ✅ 智能重试机制，网络波动也能成功

#### **方式二：首页单个下载**

1. 打开微信视频号首页
2. 在视频下方操作栏中点击下载按钮
3. 在弹出的菜单中选择下载选项：
   * **多种视频格式**: 选择不同分辨率和质量的视频
   * **原始视频**: 下载原始未压缩视频
   * **当前视频**: 下载当前播放的视频
   * **下载封面**: 单独下载视频封面图片

#### **方式三：详情页下载**

1. 打开微信视频号中的视频详情页
2. 在视频下方操作栏中点击下载按钮（如下图所示）

> 注意：如果没有看到下载按钮，请检查「更多」选项中是否有「下载视频」。下载功能支持首页和详情页。

#### 长视频下载

对于较长的视频，软件提供了缓存进度显示功能：

1. 视频加载过程中会显示缓存进度&#x20;
2. 缓存完成后会有明显提示，此时可以进行下载&#x20;

> 提示：长视频需要完整缓存后才能下载，建议按顺序缓存（不要跳着点进度条）

### 视频数据

程序会自动采集以下视频信息：

**基本信息**

* 📝 **视频标题** - 完整的视频描述
* 👤 **作者昵称** - 视频发布者昵称
* 🆔 **用户名** - 视频号唯一ID（username）
* 🔗 **视频ID** - 视频的唯一标识符
* ⏱️ **发布时间** - 视频发布的时间戳

**互动数据**

* 👍 **点赞数** - 视频获得的点赞数量
* 💬 **评论数** - 视频的评论数量
* ⭐ **收藏数** - 视频被收藏的次数
* 🔄 **转发数** - 视频被转发的次数
* 👀 **播放量** - 视频的观看次数

**视频技术参数**

* 🎥 **分辨率** - 视频的宽度和高度（如 1920x1080）
* 🎬 **码率** - 视频比特率（bps）
* 🎞️ **帧率** - 视频帧速率（fps）
* 🔊 **编码格式** - 视频编码（如 H.264）和音频编码（如 AAC）
* ⏳ **时长** - 视频持续时间
* 📦 **文件大小** - 视频文件大小

**地理位置信息**

* 🌍 **位置描述** - 视频发布的位置文本
* 📍 **经纬度** - 精确的地理坐标（latitude, longitude）
* 🏢 **POI信息** - 地点兴趣点信息
* 🌐 **IP地域** - 视频发布者的IP地址信息

**扩展信息**

* 🖼️ **封面图** - 视频封面和缩略图URL
* 🔐 **解密密钥** - 视频解密所需的key
* 📋 **多规格** - 不同分辨率和质量的视频规格列表
* 🔖 **扩展数据** - 其他元数据信息（extInfo）

#### 🎯 智能识别功能

* **作者识别**: 自动从多个数据源获取作者昵称和用户名
* **位置识别**: 智能解析IP地址和GPS坐标获取地理位置
* **数据去重**: 避免重复下载相同视频
* **质量选择**: 自动识别最高质量的视频规格

### 视频格式参数对比

下表展示了不同视频格式的参数对比，可根据需求选择合适的格式：

| 文件名                      | 分辨率       | 标识符   | 大小(MB) | 总比特率       | 帧速率        | 音频采样率    | 音频比特率    | 时长      |
| ------------------------ | --------- | ----- | ------ | ---------- | ---------- | -------- | -------- | ------- |
| ...\_WT112\_1024x576.mp4 | 1024x576  | WT112 | 18.07  | 2116 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT113\_1024x576.mp4 | 1024x576  | WT113 | 14.13  | 1655 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT114\_1024x576.mp4 | 1024x576  | WT114 | 11.08  | 1298 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT157\_1024x576.mp4 | 1024x576  | WT157 | 14.37  | 1683 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT158\_1024x576.mp4 | 1024x576  | WT158 | 11.68  | 1368 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT159\_1024x576.mp4 | 1024x576  | WT159 | 9.44   | 1105 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT111\_1280x720.mp4 | 1280x720  | WT111 | 23.39  | 2740 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| ...\_WT156\_1280x720.mp4 | 1280x720  | WT156 | 18.44  | 2160 Kbps  | 30.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |
| 原始视频                     | 1920x1080 | 原始视频  | 130.04 | 15232 Kbps | 60.000 fps | 44100 Hz | 128 Kbps | 71.61 秒 |

### 导出链接功能

程序支持将视频链接导出为多种格式，方便使用外部工具下载或数据分析。

#### 导出格式说明

**TXT 格式**：
- 纯文本格式，每行一个视频链接
- 适合使用 IDM、Aria2 等下载工具批量下载
- 注意：导出的链接为未解密链接，需要配合解密工具使用

**JSON 格式**：
- 结构化数据格式，包含完整的视频信息
- 字段包括：标题、ID、URL、KEY、作者、时长、大小、点赞、评论、收藏、转发、创建时间、封面等
- 适合程序化处理和数据分析

**Markdown 格式**：
- Markdown 表格格式，便于阅读和编辑
- 包含视频的基本信息和链接
- 适合文档记录和分享

#### 导出方式

1. **前端导出**（推荐）：
   - 在主页点击"📋 导出链接"
   - 选择导出格式（TXT/JSON/Markdown）
   - 文件会自动下载到浏览器默认下载目录
   - 包含更丰富的字段信息

2. **后端导出**：
   - 通过 API 接口导出
   - 文件保存在 `downloads/` 目录
   - 包含基础字段信息

### 下载文件管理

#### 文件保存位置

所有下载的视频文件保存在 `downloads/` 目录下：

```
downloads/
├── download_records.csv          # 下载记录 CSV 文件
├── <作者名>/                     # 按作者分类的文件夹
│   ├── 20251016_232348_视频标题.mp4
│   ├── 20251016_232349_另一个视频.mp4
│   └── 视频标题(1).mp4           # 重名文件自动编号
└── .uploads/                     # 分片上传临时目录（自动清理）
```

#### 文件命名规则

- **格式**：`<发布时间>_<视频标题>.mp4`
- **示例**：`20251016_232348_这反手抄球什么水平？.mp4`
- **重名处理**：自动添加序号 `(1)`, `(2)` 等
- **非法字符**：自动清理，替换为下划线

#### 下载记录

所有下载信息自动记录到 `downloads/download_records.csv` 文件，包含：
- 视频 ID、标题、作者、链接
- 文件大小、时长
- 互动数据（点赞、评论、收藏、转发）
- 创建时间、IP 所在地
- 下载时间

### 下载失败处理

#### 查看失败原因

1. **前端下载失败**：
   - 查看面板错误信息
   - 检查网络连接
   - 确认视频是否完整缓存

2. **后端下载失败**：
   - 使用 `batch_failed` API 导出失败清单
   - 失败清单为 JSON 格式，包含失败原因
   - 可根据失败清单重新下载

#### 重新下载

1. **单个视频重新下载**：
   - 删除已下载的文件（如果存在）
   - 重新打开视频页面下载

2. **批量重新下载**：
   - 使用"强制重新下载"选项
   - 或根据失败清单手动选择重新下载

### 下载进度查看

#### 前端下载进度

- 在下载面板中实时显示进度
- 显示当前下载的视频和总进度
- 支持取消操作

#### 后端下载进度

- 通过 `batch_progress` API 查看进度
- 返回信息：`{total, done, failed, running}`
- 可在控制台或日志中查看详细进度

### 常见下载问题

#### Q: 下载按钮不显示？

**A:** 
1. 确认程序已启动并正常运行
2. 确认代理配置正确
3. 确认证书已正确安装
4. 刷新页面重试

#### Q: 下载的视频无法播放？

**A:** 
1. 确认视频已完整下载（检查文件大小）
2. 确认视频是否需要解密（加密视频会自动解密）
3. 尝试使用其他播放器打开
4. 检查文件是否损坏，重新下载

#### Q: 批量下载部分失败？

**A:** 
1. 查看失败清单，了解失败原因
2. 检查网络连接
3. 降低并发数（设置环境变量 `WX_CHANNEL_DOWNLOAD_CONCURRENCY=1`）
4. 根据失败清单重新下载

#### Q: 如何选择视频质量？

**A:** 
- 在单个视频下载时，可以选择不同分辨率的视频
- 程序默认选择最高质量的视频
- 批量下载时使用默认最高质量

更多问题请参考 [故障排除](TROUBLESHOOTING.md) 或 [常见问题](COMMON_ISSUES.md)。
