Files
biliup-next/README.md
2026-04-01 00:44:58 +08:00

213 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# biliup-next
`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 .`
- 初始化隔离 workspace
- 尝试把父项目中的 `cookies.json` / `upload_config.json` / `biliup` 同步到 `biliup-next/runtime/`
- 执行一次 `doctor`
- 可选安装 `systemd` 服务
浏览器访问:
```text
http://127.0.0.1:8787/
```
React 迁移版控制台未来入口:
```text
http://127.0.0.1:8787/ui/
```
`frontend/dist/` 存在时Python API 会自动托管这套前端;旧控制台 `/` 仍然保留。
控制台当前支持:
- 任务列表 / 步骤 / 产物查看
- `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
```
## Runtime
默认工作目录全部在 `biliup-next/data/workspace/` 下:
- `stage/`
- `backup/`
- `session/`
- `biliup_next.db`
外部依赖目前仍复用旧项目中的:
- `../cookies.json`
- `../upload_config.json`
- `../biliup`
- `../.env` 中的 `CODEX_CMD` / `FFMPEG_BIN` / `FFPROBE_BIN`
如果你希望进一步脱离父项目,可以执行:
```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` 后,才会按配置执行清理。
## 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`