# 投稿上传功能 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)