大数跨境
0
0

完全自动化视频转载系统!

完全自动化视频转载系统! GitHubStore
2025-11-20
18
导读:YTB2BILI - YouTube 到 Bilibili 自动化转载系统项目简介一个功能完整的视频自动化处理


YTB2BILI - YouTube 到 Bilibili 自动化转载系统

项目简介

一个功能完整的视频自动化处理系统,支持从 YouTube 等平台下载视频,自动生成字幕、翻译内容、生成元数据,并定时上传到 Bilibili。

✨ 核心功能

🎬 智能视频处理链

4步准备流程(实时处理)

  1. 🎬 字幕生成 - 使用 Whisper AI 自动生成高质量字幕
  2. 📷 封面下载 - 自动下载并上传高清封面到云存储
  3. 🌐 字幕翻译 - 支持百度翻译和 DeepSeek AI 多语言翻译
  4. 🤖 元数据生成 - AI 分析视频内容,生成符合 B站规范的标题、描述、标签

定时上传策略(智能调度)

  • 🎥 视频上传 - 每小时上传一个处理完成的视频
  • 📝 字幕上传 - 视频上传成功后1小时自动上传字幕

📊 可视化管理面板

  • 📋 视频列表 - 实时查看所有视频的处理状态
  • 🔍 详细信息 - 完整的视频信息和处理步骤追踪
  • 🎯 单步重试 - 支持重新执行失败的任务步骤
  • 📈 进度监控 - 实时进度百分比和处理时长统计
  • 📁 文件管理 - 查看和下载所有生成的文件(视频、字幕、封面等)

🔐 B站账户集成

  • 📱 扫码登录 - 支持 Bilibili TV 扫码快速登录
  • 🖼️ 二维码生成 - 后端自动生成 PNG 格式登录二维码
  • 🔄 自动检测 - 前端实时轮询检测登录状态
  • 👤 用户信息 - 获取并展示用户名、头像等信息
  • 💾 状态持久化 - 自动保存登录 Token 和 Cookie
  • ⚡ 状态检查 - 智能检测账户登录状态

🏗️ 技术架构

🖥️ 后端技术栈

  • 语言: Go 1.24+ (支持最新语言特性)
  • Web 框架: Gin (高性能HTTP框架)
  • ORM: GORM v2 (支持多数据库)
  • 数据库: MySQL 8.0+ / PostgreSQL 15+ / SQLite (开发环境)
  • 文件存储: 腾讯云 COS (支持大文件分片上传)
  • 依赖注入: Uber FX (声明式依赖管理)
  • 定时任务: Robfig Cron v3 (精确到秒级调度)
  • 日志: Zap + Lumberjack (结构化日志和日志轮转)

🌐 前端技术栈

  • 框架: Next.js 15+ (支持 App Router)
  • 语言: TypeScript 5.x (完全类型安全)
  • UI 库: React 18 + Tailwind CSS 3.x
  • 图标: Lucide React (现代化图标库)
  • HTTP 客户端: Axios (支持请求拦截和重试)
  • 构建: 静态导出 + 嵌入式部署

🔗 外部服务集成

  • 🎤 yt-dlp - 多平台视频下载 (YouTube, TikTok, 等)
  • 🧠 Whisper AI - 高精度语音识别和字幕生成
  • 🌐 百度翻译 API - 专业机器翻译服务
  • 🤖 DeepSeek AI - 先进的AI翻译和内容生成
  • 📺 Bilibili SDK - 官方视频上传和用户认证API
  • ☁️ 腾讯云 COS - 企业级对象存储服务
  • 📊 数据分析 - 可选的用户行为分析和统计

🚀 快速开始

⚡ 一键部署 (推荐)

# 克隆项目 (需要前端项目在同级目录)
git clone https://github.com/difyz9/ytb2bili.git
cd ytb2bili/bili-up-api

# 一键构建 (自动构建前端+后端并打包成单个可执行文件)
make build

# 启动服务
./bili-up-api-server

🎉 就这么简单! 访问 http://localhost:8096 即可使用完整功能。

💡 构建原理make build 会自动完成以下步骤:

  1. 🔧 构建 Next.js 前端 (npm run build)
  2. 📦 将静态文件嵌入到 Go 二进制中
  3. 🚀 编译生成单个可执行文件 (约 50MB)
  4. ✅ 零依赖部署,开箱即用

📋 环境要求

组件
版本要求
用途
Go
1.24+
后端运行环境
Node.js
18+
前端构建 (仅构建时需要)
数据库
MySQL 8.0+ / PostgreSQL 15+ / SQLite
数据存储
yt-dlp
最新版
视频下载 (自动安装)

⚙️ 配置设置

1. 数据库准备

MySQL (推荐生产环境):

CREATE DATABASE ytb2bili CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ytb2bili'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON ytb2bili.* TO 'ytb2bili'@'localhost';
FLUSH PRIVILEGES;

SQLite (适用开发环境): 无需额外配置,程序会自动创建数据库文件。

2. 配置文件设置

# 复制配置模板
cp config.toml.example config.toml

# 编辑配置文件
nano config.toml

基础配置:

# 服务配置
listen = ":8096"                    # 服务监听端口
environment = "production"           # 运行环境
debug = false                       # 生产环境建议关闭
FileUpDir = "/data/ytb2bili/media"  # 文件存储目录 (需要足够磁盘空间)

# 数据库配置
[database]
  type = "mysql"                    # mysql / postgres / sqlite
  host = "localhost"
  port = 3306
  username = "ytb2bili"
  password = "your_secure_password"
  database = "ytb2bili"
  timezone = "Asia/Shanghai"

云存储配置 (推荐):

# 腾讯云 COS - 用于存储视频和封面
[TenCosConfig]
  enabled = true
  CosBucketURL = "https://your-bucket.cos.ap-guangzhou.myqcloud.com"
  CosSecretId = "您的SecretId"
  CosSecretKey = "您的SecretKey"
  CosRegion = "ap-guangzhou"
  CosBucket = "your-bucket"
  SubAppId = "您的AppId"

翻译服务配置:

# 可通过 Web 界面动态配置,无需在此设置
# - 百度翻译: 在系统设置中配置 App ID 和密钥
# - DeepSeek AI: 在系统设置中配置 API Key

🔄 其他启动方式

开发模式 (代码变更自动重启):

# 安装 air 工具
go install github.com/cosmtrek/air@latest

# 开发模式运行
make dev

仅构建后端 (跳过前端构建):

make build-api
./bili-up-api-server

生产优化构建:

make build-prod  # 启用编译优化,减小文件大小

🎯 智能处理流程

⚡ 4步准备阶段 (实时处理)

当你添加一个 YouTube 视频URL后,系统会立即开始以下处理流程:

步骤
处理器
功能描述
平均耗时
1️⃣
字幕生成
🎤 Whisper AI 语音识别,生成高精度字幕文件
2-5分钟
2️⃣
封面下载
📷 下载高清封面图,上传到云存储获取CDN链接
10-30秒
3️⃣
字幕翻译
🌐 智能翻译字幕 (百度翻译/DeepSeek AI)
30-60秒
4️⃣
元数据生成
🤖 AI分析视频内容,生成符合B站规范的标题、描述、标签
30-90秒

💡 智能特性:

  • 支持 yt-dlp 的所有平台 (YouTube, TikTok, Instagram, Twitter等)
  • 自动选择最佳视频质量 (1080p优先)
  • 智能跳过已存在的处理步骤
  • 失败自动重试机制 (最多3次)

🚀 定时上传阶段 (智能调度)

为了避免频繁上传被B站限制,系统采用智能调度策略:

graph LR
    A[准备完成] --> B[等待上传队列]
    B --> C[视频上传<br/>每小时1个]
    C --> D[等待1小时]
    D --> E[字幕上传<br/>自动关联]
    E --> F[上传完成]
阶段
调度策略
说明
🎬 视频上传
每小时1个
避免频繁上传,降低被限制风险
📝 字幕上传
视频上传后1小时
确保视频审核通过后再上传字幕
🔄 手动触发
立即执行
Web界面支持跳过队列立即上传

📊 任务状态系统

状态
图标
描述
可操作
pending
等待执行
-
running
🔄
正在执行
-
completed
已完成
✓ 可查看结果
failed
执行失败
✓ 可重试
skipped
⏭️
已跳过
✓ 可重新执行

🛡️ 容错机制

  • 任务隔离: 单个步骤失败不影响其他步骤
  • 状态恢复: 应用重启后自动恢复执行状态
  • 重试策略: 网络错误自动重试,其他错误手动重试
  • 进度保存: 每个步骤的执行结果都会持久化保存
  • 资源管理: 智能清理临时文件,避免磁盘空间不足

项目地址

https://github.com/difyz9/ytb2bili/blob/main/README.md




扫码加入技术交流群,备注「开发语言-城市-昵称

合作请注明


如果你觉得这篇文章不错,别忘了点赞、在看、转发给更多需要的小伙伴哦!我们下期再见!



【声明】内容源于网络
0
0
GitHubStore
分享有意思的开源项目
内容 1303
粉丝 0
GitHubStore 分享有意思的开源项目
总阅读1.4k
粉丝0
内容1.3k