Об этом проекте
Podspine — это небольшой самостоятельно размещаемый сервер, который указывает на папку с аудиокнигами и создаёт для каждой книги отдельную RSS-ленту подкаста, где каждый эпизод соответствует главе в правильном порядке. Вы подписываетесь на ленту в Apple Podcasts, Pocket Casts, Overcast, AntennaPod или любом другом подкаст-приложении на основе RSS. Здесь нет учётных записей, отдельного приложения и встроенного плеера — только URL ленты.
Ключевые характеристики, описанные в README:
- Главы как эпизоды, по порядку. Podspine выдаёт последовательные pubDate (самая старая = глава 1) и номера itunes:episode, а также отказывается отдавать ленту, не прошедшую собственную самопроверку.
- Запуск Docker без конфигурации с подключённой библиотекой.
- По умолчанию без перекодирования: главы извлекаются потоковым копированием, а целые файлы отдаются напрямую из библиотеки.
- Только входные данные без DRM; проект не содержит средств обхода DRM.
Варианты развёртывания включают Docker (рекомендуется), скрипт установки подписанного бинарного файла для Linux/macOS и Windows, менеджеры пакетов (Homebrew, Scoop, Nix, cargo binstall) и сборку из исходного кода с помощью Cargo. ffmpeg/ffprobe включены в образ Docker и должны быть в PATH при установке из бинарного файла. Путь к библиотеке — единственный обязательный входной параметр; остальные настройки можно задать через флаг CLI, переменную среды или файл конфигурации TOML.
Поддерживаемые форматы разделены на два уровня. Уровень 1 охватывает M4B/M4A (AAC/ALAC), одиночный MP3 и папки с MP3 по главам, используя встроенные главы или порядок файлов/дорожек. Уровень 2 охватывает OGG Vorbis, Opus, FLAC и папки с дорожками уровня 2 по главам, используя встроенные главы, боковой файл .cue (обязателен для FLAC) или порядок файлов/дорожек. Боковые файлы глав имеют приоритет над встроенными главами в порядке .cue, .ffmeta, затем встроенные. Файлы, защищённые DRM, такие как Audible .aax/.aaxc/.aa и OverDrive .odm, пропускаются с записью в журнал.
Поведение хранилища: эпизоды из целых файлов (папки MP3 и одиночные файлы без глав) передаются потоком на месте без копирования. Книги с главами материализуют аудио в каталоге данных; режим по умолчанию "full" сохраняет разбиение по главам, примерно удваивая общий размер для библиотек с главами, тогда как режим "saver" использует ограниченный кэш и восстанавливает главы при первом воспроизведении. Дополнительные настройки включают PODSPINE_TRANSCODE=aac для перекодирования нестандартных форматов при приёме и PODSPINE_REMUX_NON_FASTSTART=true для ремультиплексирования MP4-файлов без faststart без перекодирования. Переопределения для отдельных книг можно разместить в файле .podspine.toml.
Лента каждой книги находится по непредсказуемому capability-URL (/feed/{feed_id}.xml), с сопутствующими маршрутами для аудио эпизодов (HTTP Range), обложки и страницы подписки с глубокими ссылками для каждого приложения и QR-кодом. Интерфейс просмотра перечисляет библиотеку, поэтому README советует держать его в локальной сети или за аутентификацией прокси, тогда как capability-маршруты безопасно открывать. Метрики Prometheus можно выводить на отдельном слушателе.
Проект написан на Rust (редакция 2024, MSRV 1.88) как рабочее пространство с одним крейтом на каждый этап конвейера. Он лицензирован под AGPL-3.0-only и вызывает ffmpeg/ffprobe как отдельные процессы. Документация охватывает развёртывание, импорт в подкаст-приложения, архитектуру, разработку, участие, безопасность и журнал изменений.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.