项目文件夹

文件
wehub-resource-sync 41b710f9c7
CI / Backend tests (push) Failing after 1s
CI / Frontend checks (push) Failing after 0s
I18n Documentation Sync / sync-docs (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:28:40 +08:00

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)