zhouxiaoka--autoclip
184 行
4.9 KiB
Markdown
184 行
4.9 KiB
Markdown
# 投稿上传功能 v2.0 实现指南
|
|
|
|
## 概述
|
|
|
|
基于 [biliup-rs](https://github.com/biliup/biliup-rs) 项目的实现思路,我们重新开发了B站投稿上传功能,支持多种上传线路、智能线路选择和完整的错误处理。
|
|
|
|
## 新功能特性
|
|
|
|
### 🚀 核心功能
|
|
- **多种上传线路**: 支持 bda2、qn、alia、bldsa、tx、txa、bda 等线路
|
|
- **智能线路选择**: 自动测速选择最佳上传线路
|
|
- **分片上传**: 支持大文件分片上传,提高稳定性
|
|
- **完整错误处理**: 详细的错误信息和重试机制
|
|
- **进度跟踪**: 实时上传进度和状态更新
|
|
|
|
### 🔧 技术改进
|
|
- **基于 biliup-rs**: 借鉴成熟的实现方案
|
|
- **异步处理**: 完整的异步上传流程
|
|
- **Cookie管理**: 修复了加密系统,支持正确的密钥格式
|
|
- **API兼容**: 与现有系统完全兼容
|
|
|
|
## 实现架构
|
|
|
|
### 文件结构
|
|
```
|
|
backend/services/
|
|
├── bilibili_service.py # 原有服务(已更新)
|
|
├── bilibili_upload_v2.py # 新的v2.0上传实现
|
|
└── bilibili_service_backup.py # 备份文件
|
|
```
|
|
|
|
### 核心类
|
|
- `BilibiliUploaderV2`: 核心上传器,处理具体的上传逻辑
|
|
- `BilibiliUploadServiceV2`: 上传服务,管理上传流程和状态
|
|
|
|
## 使用步骤
|
|
|
|
### 1. 重新导入Cookie
|
|
|
|
由于加密系统已更新,需要重新导入B站Cookie:
|
|
|
|
1. **获取Cookie**:
|
|
- 登录B站网页版
|
|
- 打开开发者工具 (F12)
|
|
- 在Network标签页中找到任意请求
|
|
- 复制Cookie值
|
|
|
|
2. **导入Cookie**:
|
|
- 访问投稿状态页面: `http://localhost:3000/upload-status`
|
|
- 点击"投稿状态"按钮进入B站管理
|
|
- 在"账号管理"标签页中点击"添加账号"
|
|
- 选择"Cookie登录"方式
|
|
- 粘贴完整的Cookie字符串
|
|
|
|
### 2. 测试上传功能
|
|
|
|
1. **检查账号状态**:
|
|
- 确保账号状态显示为"活跃"
|
|
- 检查Cookie是否有效
|
|
|
|
2. **创建投稿任务**:
|
|
- 在项目详情页选择视频切片
|
|
- 点击"投稿到B站"按钮
|
|
- 填写标题、描述、标签等信息
|
|
- 选择投稿账号和分区
|
|
|
|
3. **监控上传进度**:
|
|
- 在投稿状态页面查看任务进度
|
|
- 实时监控上传状态和错误信息
|
|
|
|
## 技术细节
|
|
|
|
### 上传流程
|
|
```
|
|
1. 验证登录状态 → 2. 预上传获取ID → 3. 选择最佳线路
|
|
↓
|
|
4. 分片上传 → 5. 合并分片 → 6. 提交投稿 → 7. 返回BV号
|
|
```
|
|
|
|
### 上传线路
|
|
| 线路 | 提供商 | 特点 |
|
|
|------|--------|------|
|
|
| bda2 | 百度云 | 默认线路,稳定性好 |
|
|
| qn | 七牛 | 速度快 |
|
|
| alia | 阿里云海外 | 海外访问优化 |
|
|
| bldsa | B站自建 | 官方线路 |
|
|
| tx | 腾讯云 | 国内优化 |
|
|
| txa | 腾讯云海外 | 海外优化 |
|
|
| bda | 百度云海外 | 海外优化 |
|
|
|
|
### 错误处理
|
|
- **网络错误**: 自动重试,最多3次
|
|
- **认证错误**: 提示重新登录
|
|
- **文件错误**: 检查文件格式和大小
|
|
- **API错误**: 详细错误信息显示
|
|
|
|
## 配置说明
|
|
|
|
### 环境变量
|
|
```bash
|
|
# 加密密钥(已自动生成)
|
|
export ENCRYPTION_KEY="BekpMhcsOolyI_n9Hz9NxzLqMgll3vfa9qJYPOxtQXM="
|
|
```
|
|
|
|
### 上传参数
|
|
```python
|
|
metadata = {
|
|
'title': '视频标题', # 最大80字符
|
|
'description': '视频描述', # 最大2000字符
|
|
'tags': ['标签1', '标签2'], # 标签列表
|
|
'partition_id': 3 # 分区ID
|
|
}
|
|
```
|
|
|
|
## 故障排除
|
|
|
|
### 常见问题
|
|
|
|
1. **Cookie解密失败**
|
|
- 原因: 使用了旧的加密密钥
|
|
- 解决: 重新导入Cookie
|
|
|
|
2. **上传失败**
|
|
- 原因: 网络问题或API限制
|
|
- 解决: 检查网络连接,尝试不同线路
|
|
|
|
3. **文件过大**
|
|
- 原因: 超过B站8GB限制
|
|
- 解决: 压缩视频或分割文件
|
|
|
|
4. **账号状态异常**
|
|
- 原因: Cookie过期或无效
|
|
- 解决: 重新登录获取新Cookie
|
|
|
|
### 调试方法
|
|
|
|
1. **查看日志**:
|
|
```bash
|
|
tail -f logs/celery.log
|
|
```
|
|
|
|
2. **检查数据库**:
|
|
```sql
|
|
SELECT * FROM bilibili_upload_records ORDER BY created_at DESC LIMIT 5;
|
|
```
|
|
|
|
3. **测试API**:
|
|
```bash
|
|
curl -s http://localhost:8000/api/v1/upload/records | jq .
|
|
```
|
|
|
|
## 性能优化
|
|
|
|
### 上传速度优化
|
|
- **并发上传**: 支持多分片并发上传
|
|
- **线路选择**: 自动选择最快线路
|
|
- **重试机制**: 智能重试失败的分片
|
|
|
|
### 稳定性优化
|
|
- **错误恢复**: 自动处理网络中断
|
|
- **状态同步**: 实时更新上传状态
|
|
- **数据完整性**: 确保文件完整上传
|
|
|
|
## 更新日志
|
|
|
|
### v2.0.0 (2025-09-11)
|
|
- ✅ 基于 biliup-rs 重新实现上传功能
|
|
- ✅ 支持多种上传线路和智能选择
|
|
- ✅ 修复Cookie加密系统
|
|
- ✅ 完善错误处理和重试机制
|
|
- ✅ 添加详细的上传进度跟踪
|
|
|
|
### 后续计划
|
|
- 🔄 支持多P投稿
|
|
- 🔄 添加上传队列管理
|
|
- 🔄 实现断点续传
|
|
- 🔄 支持批量投稿
|
|
|
|
## 相关链接
|
|
|
|
- [biliup-rs 项目](https://github.com/biliup/biliup-rs)
|
|
- [B站投稿API文档](https://github.com/biliup/biliup-rs)
|
|
- [投稿状态页面使用指南](./UPLOAD_STATUS_PAGE_GUIDE.md)
|