862db502b08418ebbcf3234d5393393a54750c0c
biliup-next
biliup-next 是当前仓库内独立运行的新流水线实现。
目标:
- 使用单 worker + 状态机替代旧 watcher 流程
- 提供独立控制面、配置系统和隔离 workspace
- 在
biliup-next内独立运行完整主链路
Current Scope
当前已实现:
- 文档基线
- 配置系统骨架
- SQLite 存储骨架
- 任务模型与任务仓库
- 最小 HTTP API
- 基础 CLI
- 隔离 workspace 运行
stage -> ingest -> transcribe -> song_detect -> split -> publish -> comment -> collection主链路
Run
cd /home/theshy/biliup
PYTHONPATH=biliup-next/src python -m biliup_next.app.cli init
PYTHONPATH=biliup-next/src python -m biliup_next.app.cli doctor
PYTHONPATH=biliup-next/src python -m biliup_next.app.cli init-workspace
PYTHONPATH=biliup-next/src python -m biliup_next.app.cli worker --interval 5
PYTHONPATH=biliup-next/src python -m biliup_next.app.cli serve --host 127.0.0.1 --port 8787
推荐先执行一键初始化:
cd /home/theshy/biliup/biliup-next
bash setup.sh
它会完成:
- 创建
biliup-next/.venv pip install -e .- 缺失时自动生成 standalone
settings.json - 初始化隔离 workspace
- 缺失时自动生成 runtime 模板文件
- 校验
runtime/中的本地运行资产 - 执行一次
doctor - 可选安装
systemd服务
新机器冷启动步骤见:
docs/cold-start-checklist.md
浏览器访问:
http://127.0.0.1:8787/
旧控制台保留入口:
http://127.0.0.1:8787/classic
当 frontend/dist/ 存在时,Python API 会自动把 React 控制台托管为默认首页 /;旧控制台保留在 /classic。
控制台当前支持:
- 任务列表 / 步骤 / 产物查看
doctor检查查看- 模块清单查看
- schema 驱动的 Settings 表单
- 高频参数优先展示,低频项收纳在 Advanced Settings
- 配置分组标题、排序和 featured 字段均由
config/settings.schema.json控制 ui_widget、placeholder 和分组说明也由 schema 决定publish.retry_schedule_minutes支持按次配置上传重试间隔- 默认第 1 次重试等待 15 分钟
- 第 2-5 次各等待 5 分钟
- 评论链路支持拆分:
- 纯享版
bvid.txt下默认发布“无时间轴编号歌单” - 完整版主视频默认尝试发布“带时间轴评论”
- 若找不到
full_video_bvid.txt或匹配不到完整版视频,则主视频评论跳过
- 纯享版
- 任务完成后支持可选清理:
- 删除 session 中的原始完整视频
- 删除
split_video/目录中的纯享切片
settings.json原始 JSON 兜底编辑- 敏感字段会显示为
__BILIUP_NEXT_SECRET__ - 保留占位符表示“不改原值”,改为空字符串才会清空
- 敏感字段会显示为
- 手动触发一轮
worker - 单任务执行 / 指定 step 重试 / 重置到某一步后重跑
- 任务详情直接显示下一次重试时间、剩余等待时长和重试策略
- 控制台已重构为
Overview / Tasks / Settings / Logs分区导航,任务页支持搜索、状态过滤和排序 systemd服务状态查看与start/stop/restart- 全局 Recent Actions 动作流,可按任务 / 状态 / action_name 过滤
- 系统日志查看,可按当前任务标题过滤
- 把本机现有视频导入隔离
stage - 浏览器直接上传文件到隔离
stage
控制台操作手册见:
docs/control-plane-guide.md
也可以直接使用项目内启动脚本:
cd /home/theshy/biliup/biliup-next
bash run-worker.sh
bash run-api.sh
安装后也可以直接使用 console script:
cd /home/theshy/biliup/biliup-next
./.venv/bin/biliup-next doctor
./.venv/bin/biliup-next worker --interval 5
./.venv/bin/biliup-next serve --host 127.0.0.1 --port 8787
快速冒烟测试:
cd /home/theshy/biliup/biliup-next
bash smoke-test.sh
bash cold-start-smoke.sh
Runtime
默认工作目录全部在 biliup-next/data/workspace/ 下:
stage/backup/session/biliup_next.db
运行资产默认都位于 biliup-next/runtime/:
runtime/cookies.jsonruntime/upload_config.jsonruntime/biliupruntime/logs/api.logruntime/logs/worker.log
run-api.sh 和 run-worker.sh 现在会自动把 stdout/stderr 追加写入对应日志文件,同时保留终端输出;控制台 Logs 页会直接读取这些日志文件。
默认日志轮转策略:
- 单文件上限
20 MiB - 保留最近
5个历史文件 - 可通过环境变量覆盖:
BILIUP_NEXT_LOG_MAX_BYTESBILIUP_NEXT_LOG_BACKUPS
如果你要把当前机器上已有版本复制到本地 runtime,可以执行:
cd /home/theshy/biliup/biliup-next
./.venv/bin/biliup-next sync-legacy-assets
这会把当前可用的:
cookies.jsonupload_config.jsonbiliup
复制到 biliup-next/runtime/,并把 settings.json 切换到本地副本。
Comment And Cleanup
评论默认分成两条:
comment.post_split_comment = true- 纯享版分P视频下发布编号歌单评论
- 不带时间轴
comment.post_full_video_timeline_comment = true- 尝试在完整版主视频下发布带时间轴的置顶评论
- 依赖
full_video_bvid.txt或通过标题匹配解析到完整版 BV
清理默认关闭:
cleanup.delete_source_video_after_collection_synced = falsecleanup.delete_split_videos_after_collection_synced = false
只有在任务进入 collection_synced 后,才会按配置执行清理。
Full Video BV Input
完整版 BV 目前支持 3 种来源:
stage/*.meta.json中的full_video_bvid- 前端 / API 手工绑定
- webhook:
POST /webhooks/full-video-uploaded
推荐 webhook 负载:
{
"session_key": "王海颖:20260402T2203",
"source_title": "王海颖唱歌录播 04月02日 22时03分",
"streamer": "王海颖",
"room_id": "581192190066",
"full_video_bvid": "BV1uH9wBsELC"
}
如果 webhook 先于片段 ingest 到达,biliup-next 会先把它持久化;后续同 session_key 或 source_title 的任务进入时会自动继承该 BV。
Security
控制台支持可选 token 保护:
- 配置项:
runtime.control_token - 默认值为空,表示不启用认证
- 配置后,除
/和/health外,其余 API 都要求请求头X-Biliup-Token - 控制台首页可在顶部输入并保存 token,浏览器会保存在本地
localStorage
systemd
模板位于:
systemd/biliup-next-worker.service.templatesystemd/biliup-next-api.service.templateinstall-systemd.sh
使用前把模板中的这些占位符替换成实际值:
__PROJECT_DIR____USER____GROUP____PYTHON_BIN__
推荐先启动 worker,api 可以单独开。
在当前机器上直接安装:
cd /home/theshy/biliup/biliup-next
bash install-systemd.sh
脚本会自动:
- 按当前目录渲染 unit
- 安装到
/etc/systemd/system/ daemon-reloadenable --now启动worker和api
Description
Languages
Python
65.8%
JavaScript
28.7%
CSS
3.9%
Shell
1.6%