feat: add session-level publish and comment flow
This commit is contained in:
80
README.md
80
README.md
@ -20,6 +20,11 @@
|
||||
- 基础 CLI
|
||||
- 隔离 workspace 运行
|
||||
- `stage -> ingest -> transcribe -> song_detect -> split -> publish -> comment -> collection` 主链路
|
||||
- session 级归并与交付
|
||||
- 同主播、文件名时间相差 `3` 小时内的片段归入同一 session
|
||||
- session 的 `session_key` 使用最早片段标题
|
||||
- 同一 session 的纯享版只发布一个 BV
|
||||
- 同一 session 的纯享版评论与完整版评论都按 `P1/P2/P3` 聚合
|
||||
|
||||
## Run
|
||||
|
||||
@ -81,8 +86,10 @@ http://127.0.0.1:8787/classic
|
||||
- 默认第 1 次重试等待 15 分钟
|
||||
- 第 2-5 次各等待 5 分钟
|
||||
- 评论链路支持拆分:
|
||||
- 纯享版 `bvid.txt` 下默认发布“无时间轴编号歌单”
|
||||
- 完整版主视频默认尝试发布“带时间轴评论”
|
||||
- 纯享版 `bvid.txt` 下默认发布 session 级聚合歌单评论
|
||||
- 同一 session 只由 anchor task 发一次,内容按 `P1/P2/P3` 分组
|
||||
- 完整版主视频默认尝试发布 session 级“带时间轴评论”
|
||||
- 同一 session 只由 anchor task 发一次,内容按 `P1/P2/P3` 分组
|
||||
- 若找不到 `full_video_bvid.txt` 或匹配不到完整版视频,则主视频评论跳过
|
||||
- 任务完成后支持可选清理:
|
||||
- 删除 session 中的原始完整视频
|
||||
@ -176,10 +183,13 @@ cd /home/theshy/biliup/biliup-next
|
||||
评论默认分成两条:
|
||||
|
||||
- `comment.post_split_comment = true`
|
||||
- 纯享版分P视频下发布编号歌单评论
|
||||
- 不带时间轴
|
||||
- 纯享版视频下发布 session 级聚合编号歌单评论
|
||||
- 同一 session 只发一次
|
||||
- 内容按 `P1/P2/P3` 分组
|
||||
- `comment.post_full_video_timeline_comment = true`
|
||||
- 尝试在完整版主视频下发布带时间轴的置顶评论
|
||||
- 尝试在完整版主视频下发布 session 级带时间轴置顶评论
|
||||
- 同一 session 只发一次
|
||||
- 内容按 `P1/P2/P3` 分组
|
||||
- 依赖 `full_video_bvid.txt` 或通过标题匹配解析到完整版 BV
|
||||
|
||||
清理默认关闭:
|
||||
@ -211,6 +221,37 @@ cd /home/theshy/biliup/biliup-next
|
||||
|
||||
如果 webhook 先于片段 ingest 到达,`biliup-next` 会先把它持久化;后续同 `session_key` 或 `source_title` 的任务进入时会自动继承该 `BV`。
|
||||
|
||||
## Session Rules
|
||||
|
||||
当前默认 session 归并规则是最小启发式实现:
|
||||
|
||||
- 从文件名解析 `streamer + 日期时间`
|
||||
- 同一 `streamer`
|
||||
- 时间相差在 `3` 小时内
|
||||
- 归到同一个 session
|
||||
- `session_key` 直接使用最早片段标题
|
||||
|
||||
例如:
|
||||
|
||||
- `Self-test 04月04日 09时23分`
|
||||
- `Self-test 04月04日 09时25分`
|
||||
- `Self-test 04月04日 09时27分`
|
||||
|
||||
会归到同一个:
|
||||
|
||||
```text
|
||||
session_key = Self-test 04月04日 09时23分
|
||||
```
|
||||
|
||||
在同一个 session 内:
|
||||
|
||||
- 只有最早片段对应的 anchor task 会真正执行纯享版上传
|
||||
- 上传时会聚合整个 session 下所有 `split_video`
|
||||
- 成功后整组 task 共用同一个 `bvid.txt`
|
||||
- 纯享版评论与完整版评论也都只由 anchor task 发送一次
|
||||
|
||||
推荐 webhook 也使用同一个最早标题作为 `session_key` / `source_title`,这样完整版 `BV` 能稳定命中整组任务。
|
||||
|
||||
## Security
|
||||
|
||||
控制台支持可选 token 保护:
|
||||
@ -250,3 +291,32 @@ bash install-systemd.sh
|
||||
- 安装到 `/etc/systemd/system/`
|
||||
- `daemon-reload`
|
||||
- `enable --now` 启动 `worker` 和 `api`
|
||||
|
||||
## Bilibili URL Ingest
|
||||
|
||||
现在也支持直接给 B 站视频链接创建任务。
|
||||
|
||||
CLI:
|
||||
|
||||
```bash
|
||||
cd /home/theshy/biliup/biliup-next
|
||||
PYTHONPATH=src python -m biliup_next.app.cli create-task \
|
||||
--source-type bilibili_url \
|
||||
"https://www.bilibili.com/video/BVxxxxxxxxxx"
|
||||
```
|
||||
|
||||
API:
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:8787/tasks \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"source_type": "bilibili_url",
|
||||
"source_url": "https://www.bilibili.com/video/BVxxxxxxxxxx"
|
||||
}'
|
||||
```
|
||||
|
||||
相关配置:
|
||||
|
||||
- `ingest.provider = bilibili_url`
|
||||
- `ingest.yt_dlp_cmd = yt-dlp`
|
||||
|
||||
Reference in New Issue
Block a user