À propos du projet
Podspine est un petit serveur auto-hébergé qui pointe vers un dossier de livres audio et attribue à chaque livre son propre flux RSS de podcast, avec un épisode par chapitre dans le bon ordre. Vous vous abonnez au flux dans Apple Podcasts, Pocket Casts, Overcast, AntennaPod ou toute autre application de podcast basée sur RSS. Il n'y a ni comptes, ni application séparée, ni lecteur intégré — juste une URL de flux.
Caractéristiques clés décrites dans le README :
- Chapitres en tant qu'épisodes, dans l'ordre. Podspine émet des pubDates séquentielles (la plus ancienne = chapitre 1) et des numéros d'épisode itunes:episode, et refuse de servir un flux qui échoue à son propre auto-contrôle.
- Exécution Docker zéro configuration avec la bibliothèque montée.
- Pas de ré-encodage par défaut : les chapitres sont extraits par copie de flux, et les fichiers entiers sont servis directement depuis la bibliothèque.
- Entrée sans DRM uniquement ; le projet ne fournit aucun contournement de DRM.
Les options de déploiement incluent Docker (recommandé), un script d'installation binaire signé pour Linux/macOS et Windows, des gestionnaires de paquets (Homebrew, Scoop, Nix, cargo binstall), et la compilation depuis les sources avec Cargo. ffmpeg/ffprobe sont inclus dans l'image Docker et doivent être sur le PATH pour les installations binaires. Le chemin de la bibliothèque est la seule entrée requise ; d'autres paramètres peuvent être définis via un indicateur CLI, une variable d'environnement ou un fichier de configuration TOML.
Les formats pris en charge sont regroupés en deux niveaux. Le niveau 1 couvre M4B/M4A (AAC/ALAC), MP3 mono-fichier, et dossiers de MP3 par chapitre, en utilisant les chapitres intégrés ou l'ordre des fichiers/pistes. Le niveau 2 couvre OGG Vorbis, Opus, FLAC, et dossiers de pistes de niveau 2 par chapitre, en utilisant les chapitres intégrés, un fichier .cue latéral (requis pour FLAC), ou l'ordre des fichiers/pistes. Les fichiers latéraux de chapitres sont préférés aux chapitres intégrés dans l'ordre .cue, .ffmeta, puis intégré. Les fichiers protégés par DRM tels que Audible .aax/.aaxc/.aa et OverDrive .odm sont ignorés avec un avis journalisé.
Comportement de stockage : les épisodes de fichiers entiers (dossiers MP3 et fichiers uniques sans chapitres) sont diffusés en continu sur place sans copie. Les livres chapitrés matérialisent l'audio sous le répertoire de données ; le mode "full" par défaut conserve une division par chapitre, doublant approximativement la taille totale pour les bibliothèques chapitrées, tandis que le mode "saver" conserve un cache limité et régénère les chapitres à la première lecture. Les options facultatives incluent PODSPINE_TRANSCODE=aac pour ré-encoder les formats inhabituels à l'ingestion, et PODSPINE_REMUX_NON_FASTSTART=true pour remuxer les fichiers MP4 non-faststart sans ré-encodage. Des remplacements par livre peuvent être placés dans un fichier .podspine.toml.
Le flux de chaque livre se trouve à une URL à capacité impossible à deviner (/feed/{feed_id}.xml), avec des routes compagnes pour l'audio des épisodes (Range HTTP), la couverture, et une page d'abonnement avec des liens profonds par application et un code QR. L'interface de navigation énumère la bibliothèque, donc le README conseille de la garder sur le LAN ou derrière une authentification proxy tandis que les routes à capacité sont sûres à exposer. Les métriques Prometheus peuvent être exposées sur un écouteur séparé.
Le projet est écrit en Rust (édition 2024, MSRV 1.88) comme un espace de travail avec une crate par étape de pipeline. Il est sous licence AGPL-3.0-only et délègue à ffmpeg/ffprobe comme processus séparés. La documentation couvre le déploiement, l'importation dans les applications de podcast, l'architecture, le développement, la contribution, la sécurité et un journal des modifications.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.