daily: 2026-06-20 有声书全线搭建 + 文档体系补全 + 三层同步铁律

This commit is contained in:
fxy
2026-06-20 18:37:13 +08:00
parent 489d63de51
commit dc3741400f

View File

@ -1,51 +1,57 @@
# 2026-06-20 有声书服务全线搭建 # 2026-06-20 运维实录
## Audiobookshelf 章节排序三层同步铁律 ## 有声书服务全线搭建
### Audiobookshelf 部署
- Docker 部署 ghcr.io/advplyr/audiobookshelf:latest端口 13378
- Caddy 反代 podcast.xybkwd.top
- 手机端希声 App 同步收听
### 章节排序三层同步铁律
只改文件名不生效Audiobookshelf 按三层数据排序: 只改文件名不生效Audiobookshelf 按三层数据排序:
| 层 | 字段 | 规则 | | 层 | 字段 | 规则 |
|:---|:---|:---| |:---|:---|:---|
| 文件系统 | 文件名 `01-标题.mp3` | 数字前缀 | | 文件系统 | 文件名 01-标题.mp3 | 数字前缀 |
| books.chapters | `start`(秒) | 必须连续递增 | | books.chapters | start(秒) | 连续递增 |
| books.audioFiles | `index` | 必须 1→2→3→... | | books.audioFiles | index | 1→2→3→... |
## 完整下载→归档工作流
### 下载→归档工作流
``` ```
yt-dlp 下载(带 --print upload_date) yt-dlp 下载(带 upload_date) → 排序 → 加前缀
按 upload_date 排序 → 加 01-N 前缀 audiobooks/节目名/
→ 放入 audiobooks/节目名/
→ archive_old_audio.sh <节目> 3 (淘汰旧集到 archive_pending/) → archive_old_audio.sh <节目> 3 (淘汰旧集到 archive_pending/)
→ sync_archive.sh (SCP到 D:/服务器备份/有声书/) → sync_archive.sh (SCP到 D:/服务器备份/有声书/)
→ watcher 自动检测 → 希声同步 → watcher 自动检测 → 希声同步
``` ```
## 服务架构 ### 本地归档
- D:/服务器备份/有声书/<节目名>/ (D盘 392G)
- 脚本: archive_old_audio.sh / sync_archive.sh
| 组件 | 位置 | ### 有声书内容
|:---|:---| | 节目 | 集数 | 来源 | 状态 |
| Audiobookshelf | podcast.xybkwd.top :13378 | |:---|:---|:---|:---|
| 滚动保留 | 每节目 3 集 | | 渤海小吏·八王之乱 | 5集 | B站 | ✅ |
| 待归档 | /home/ubuntu/audiobookshelf/archive_pending/ | | 纵横四海 | 3集 | B站 | ✅ |
| 本地归档 | D:/服务器备份/有声书/ (392G 可用) | | 翟东升 | - | YouTube | ❌ 需cookies |
| 淘汰脚本 | /home/ubuntu/audiobookshelf/scripts/archive_old_audio.sh | | Elon Musk | 99集 | 本地导入 | ✅ |
| 同步脚本 | D:/服务器备份/有声书/sync_archive.sh |
## 踩坑记录 ## 踩坑
1. 数据库误删 — 任何 DB/cache 操作必须先确认
2. 章节排序是 start 时间戳,不是文件名字母序
3. SCP 中文路径失败 — 需临时英文路径中转
4. 容器有 watcher不需要重启
5. B站用 -f worst 最小化下载,每集 ~40MB
6. YouTube 需要 cookies 认证
1. 数据库误删 - 未先问用户,教训:任何 DB/cache 操作必须先确认 ## 文档体系
2. 章节排序 - 不是靠文件名字母序,是靠 chapters[].start 时间戳 - server-ops: TIMELINE + CHANGELOG + DECISION_LOG 全面补全
3. SCP 中文路径 - 含空格的目录需用临时路径中转 - dashboard: CHANGELOG v1.4.0
4. 容器无需频繁重启 - Audiobookshelf watcher 自动检测文件变化 - nav-page: CHANGELOG v1.0.3
5. B站无纯音频流 - 用 `-f worstvideo+worstaudio/worst` 最小化下载量(每集 ~40MB) - inspiration-collector: CHANGELOG v2.2 + 文章20_服务器
6. Gitea 凭证 - 固定为 beast API token: `bb731ed7d0d267b98a1c7d082de6c8fc0329ac21` - 服务清单 10→17 项
## 当前内容 ## 今日感悟
- "不可越过":管线通了就收手,知道什么时候够了
| 节目 | 集数 | 来源 | - "车马华服":客户端追求渲染,服务器追求完成
|:---|:---|:---| - 三层记忆WorkBuddy + 项目级 + 宏观,比空白强
| 渤海小吏·八王之乱 | 5集 | B站 |
| 纵横四海 | 3集 | B站 |
| 翟东升 | 3集 | YouTube |
| Elon Musk | 99集 | 本地导入 |