# 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 ```bash 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 ``` 推荐先执行一键初始化: ```bash 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` 浏览器访问: ```text http://127.0.0.1:8787/ ``` 旧控制台保留入口: ```text 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` 也可以直接使用项目内启动脚本: ```bash cd /home/theshy/biliup/biliup-next bash run-worker.sh bash run-api.sh ``` 安装后也可以直接使用 console script: ```bash 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 ``` 快速冒烟测试: ```bash 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.json` - `runtime/upload_config.json` - `runtime/biliup` - `runtime/logs/api.log` - `runtime/logs/worker.log` `run-api.sh` 和 `run-worker.sh` 现在会自动把 stdout/stderr 追加写入对应日志文件,同时保留终端输出;控制台 `Logs` 页会直接读取这些日志文件。 默认日志轮转策略: - 单文件上限 `20 MiB` - 保留最近 `5` 个历史文件 - 可通过环境变量覆盖: - `BILIUP_NEXT_LOG_MAX_BYTES` - `BILIUP_NEXT_LOG_BACKUPS` 如果你要把当前机器上已有版本复制到本地 runtime,可以执行: ```bash cd /home/theshy/biliup/biliup-next ./.venv/bin/biliup-next sync-legacy-assets ``` 这会把当前可用的: - `cookies.json` - `upload_config.json` - `biliup` 复制到 `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 = false` - `cleanup.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 负载: ```json { "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.template` - `systemd/biliup-next-api.service.template` - `install-systemd.sh` 使用前把模板中的这些占位符替换成实际值: - `__PROJECT_DIR__` - `__USER__` - `__GROUP__` - `__PYTHON_BIN__` 推荐先启动 `worker`,`api` 可以单独开。 在当前机器上直接安装: ```bash cd /home/theshy/biliup/biliup-next bash install-systemd.sh ``` 脚本会自动: - 按当前目录渲染 unit - 安装到 `/etc/systemd/system/` - `daemon-reload` - `enable --now` 启动 `worker` 和 `api`