init biliup-next

This commit is contained in:
theshy
2026-04-01 00:44:58 +08:00
commit d0cf1fd0df
127 changed files with 15582 additions and 0 deletions

212
README.md Normal file
View File

@ -0,0 +1,212 @@
# 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`