这个项目能做什么

Podspine 是一个小型自托管服务器,指向一个有声读物文件夹,并为每本书提供自己的播客 RSS 订阅源,每个章节按正确顺序对应一集。您可以在 Apple Podcasts、Pocket Casts、Overcast、AntennaPod 或任何其他基于 RSS 的播客应用中订阅该订阅源。无需账户、无需单独应用、也没有内置播放器——只需一个订阅源 URL。 README 中描述的主要特点: - 章节作为剧集,按顺序排列。Podspine 发出连续的 pubDates(最旧 = 第 1 章)和 itunes:episode 编号,并拒绝提供未通过自身检查的订阅源。 - 零配置 Docker 运行,挂载库目录。 - 默认不重新编码:章节通过流复制提取,整个文件直接从库中提供。 - 仅支持无 DRM 的输入;项目不提供任何 DRM 规避功能。 部署选项包括 Docker(推荐)、适用于 Linux/macOS 和 Windows 的签名二进制安装脚本、包管理器(Homebrew、Scoop、Nix、cargo binstall)以及使用 Cargo 从源码构建。ffmpeg/ffprobe 已捆绑在 Docker 镜像中,二进制安装时需在 PATH 中。库路径是唯一必需的输入;其他设置可通过 CLI 标志、环境变量或 TOML 配置文件设置。 支持的格式分为两个层级。第一层涵盖 M4B/M4A(AAC/ALAC)、单文件 MP3 和按章节划分的 MP3 文件夹,使用嵌入式章节或文件/曲目顺序。第二层涵盖 OGG Vorbis、Opus、FLAC 和按章节划分的第二层曲目文件夹,使用嵌入式章节、.cue 辅助文件(FLAC 必需)或文件/曲目顺序。章节辅助文件优先于嵌入式章节,顺序为 .cue、.ffmeta,然后是嵌入式。受 DRM 保护的文件(如 Audible 的 .aax/.aaxc/.aa 和 OverDrive 的 .odm)会被跳过并记录日志。 存储行为:整文件剧集(MP3 文件夹和无章节的单文件)原地流式传输,不进行复制。有章节的书籍会在数据目录下生成音频;默认的“完整”模式保留每章节的分割,对于有章节的库,总大小大约翻倍,而“节省”模式保留有界缓存并在首次播放时重新生成章节。可选设置包括 PODSPINE_TRANSCODE=aac 在摄取时重新编码特殊格式,以及 PODSPINE_REMUX_NON_FASTSTART=true 在不重新编码的情况下重新封装非 faststart 的 MP4 文件。每本书的覆盖设置可放在 .podspine.toml 文件中。 每本书的订阅源位于一个不可猜测的能力 URL(/feed/{feed_id}.xml),并配有剧集音频(HTTP Range)、封面图和订阅页面(包含各应用深层链接和二维码)的配套路由。浏览界面会枚举库内容,因此 README 建议将其放在局域网内或代理认证之后,而能力路由则可以安全公开。Prometheus 指标可在单独的监听器上暴露。 该项目使用 Rust(2024 版,MSRV 1.88)编写,是一个工作区,每个流水线阶段一个 crate。它采用 AGPL-3.0-only 许可证,并将 ffmpeg/ffprobe 作为独立进程调用。文档涵盖部署、导入播客应用、架构、开发、贡献、安全和变更日志。