feat: add session-level publish and comment flow

This commit is contained in:
theshy
2026-04-14 16:00:17 +08:00
parent 862db502b0
commit d5d9693581
42 changed files with 2478 additions and 181 deletions

View File

@ -41,7 +41,9 @@ bash setup.sh
- 编辑 `runtime/upload_config.json`
-`biliup` 放到 `runtime/biliup`,或在 `settings.json` 里改成系统路径
- 填写 `transcribe.groq_api_key`
- 按机器实际情况调整 `song_detect.codex_cmd`
- 按机器实际情况调整 `song_detect.provider`
- 如果用 `codex`,调整 `song_detect.codex_cmd`
- 如果用 `qwen_cli`,调整 `song_detect.qwen_cmd`
- 按需要填写 `collection.season_id_a` / `collection.season_id_b`
## 5. 验收
@ -74,6 +76,7 @@ http://127.0.0.1:8787/
- `runtime/cookies.json`
- `runtime/upload_config.json`
- `publish.biliup_path`
- `song_detect.codex_cmd`
- `song_detect.provider`
- `song_detect.codex_cmd``song_detect.qwen_cmd`
- `transcribe.groq_api_key`
- `collection.season_id_a` / `collection.season_id_b`

View File

@ -114,7 +114,10 @@ User edits config
### ingest
- `provider`
- `min_duration_seconds`
- `ffprobe_bin`
- `yt_dlp_cmd`
- `allowed_extensions`
### transcribe
@ -128,6 +131,7 @@ User edits config
- `provider`
- `codex_cmd`
- `qwen_cmd`
- `poll_interval_seconds`
### split

View File

@ -232,17 +232,31 @@ http://127.0.0.1:8787/
排查原则:
- `transcribe` 失败:先看 `Groq API Key``ffmpeg`
- `song_detect` 失败:先看 `codex_cmd`
- `song_detect` 失败:先看 `song_detect.provider`,再看 `codex_cmd``qwen_cmd`
- `publish` 失败:先看 `cookies.json``biliup`
- `collection_*` 失败:再看任务历史和日志
评论规则补充:
- `comment`
- 纯享版视频下默认发“编号歌单”,不带时间轴
- 完整版主视频下默认才发“带时间轴评论”
- 纯享版视频下默认发 session 级聚合“编号歌单”
- 内容按 `P1/P2/P3` 分组
- 同一 session 只由 anchor task 发一次
- 完整版主视频下默认才发 session 级“带时间轴评论”
- 内容按 `P1/P2/P3` 分组
- 同一 session 只由 anchor task 发一次
- 如果当前任务找不到 `full_video_bvid.txt`,也没能从最近发布列表解析出完整版 BV主视频评论会跳过
session 规则补充:
- 同主播、文件名时间 `3` 小时内的任务会自动归到同一 session
- session 的 `session_key` 使用最早片段标题
- 同一 session 内:
- 只有 anchor task 真正执行纯享版上传
- 纯享版上传会聚合整组 `split_video`
- 整组 task 共用同一个 `bvid.txt`
- split/full 评论都只发一次
## Artifacts
这里显示任务当前已经产出的文件,例如:
@ -324,7 +338,7 @@ http://127.0.0.1:8787/
- `upload_config_file`
- `ffprobe`
- `ffmpeg`
- `codex_cmd`
- `codex_cmd``qwen_cmd`
- `biliup_path`
如果某个依赖显示 `(external)`,表示它还在用系统或父项目路径,不是 `biliup-next` 自己目录内的副本。
@ -361,6 +375,7 @@ Settings 分成两层:
- `min_duration_seconds`
- `groq_api_key`
- `codex_cmd`
- `qwen_cmd`
- `retry_count`
- `season_id_a`
- `season_id_b`
@ -449,7 +464,7 @@ __BILIUP_NEXT_SECRET__
建议:
- 如果你希望纯享版评论更适合分P浏览,保持 `post_split_comment = true`
- 如果你希望纯享版评论以 session 级聚合歌单展示,保持 `post_split_comment = true`
- 如果你不希望尝试给完整版主视频发时间轴评论,可以关闭 `post_full_video_timeline_comment`
- 如果磁盘紧张,再开启 cleanup默认建议先关闭等确认流程稳定后再开

View File

@ -88,7 +88,9 @@
负责:
- 上传纯享版视频
- 记录 `aid/bvid`
- 同 session 多个 task 时,只由 anchor task 真正执行上传
- 聚合同 session 的全部 `clip_video`
- 成功后把同一个 `bvid` 写回整组 task
### comment
@ -96,6 +98,9 @@
- 发布评论
- 置顶评论
- split 评论在 session 级聚合为 `P1/P2/P3`
- full 评论在 session 级聚合为 `P1/P2/P3`
- 同一 session 的评论只由 anchor task 执行一次
### collection_a
@ -156,6 +161,31 @@ created
- `collection_b` 必须依赖 `publish`
- `collection_a` 通常依赖外部完整版 BV可独立于 `publish`
## Session Semantics
当多个 task 属于同一个 `session_key` 时,系统会引入 session 级语义:
- `split` 仍然保持 task 级
- `publish` 升级为 session 级
- `comment` 升级为 session 级
当前 anchor 规则:
- 同一 session 内按 `segment_started_at` 升序排序
- 最早那个 task 作为 anchor
当前 session 级行为:
- `publish`
- 只有 anchor task 执行真实上传
- 其余 task 复用同一个纯享 `BV`
- `comment.split`
- 只有 anchor task 对纯享版视频发评论
- 评论内容按 `P1/P2/P3` 聚合
- `comment.full`
- 只有 anchor task 对完整版视频发评论
- 评论内容按 `P1/P2/P3` 聚合
## Special Case: Collection A
合集 A 的数据来源与主上传链路不同。