Sobre el proyecto

Podspine es un pequeño servidor autoalojado que apunta a una carpeta de audiolibros y le da a cada libro su propio feed RSS de podcast, con un episodio por capítulo en el orden correcto. Te suscribes al feed en Apple Podcasts, Pocket Casts, Overcast, AntennaPod o cualquier otra app de podcast basada en RSS. No hay cuentas, ni app separada, ni reproductor integrado: solo una URL de feed. Características clave descritas en el README: - Capítulos como episodios, en orden. Podspine emite pubDates secuenciales (el más antiguo = capítulo 1) y números itunes:episode, y se niega a servir un feed que no pase su propia autocomprobación. - Ejecución Docker sin configuración con la biblioteca montada. - Sin recodificación por defecto: los capítulos se extraen mediante copia de flujo, y los archivos completos se sirven directamente desde la biblioteca. - Solo entrada sin DRM; el proyecto no incluye ninguna elusión de DRM. Las opciones de despliegue incluyen Docker (recomendado), un script de instalación de binario firmado para Linux/macOS y Windows, gestores de paquetes (Homebrew, Scoop, Nix, cargo binstall) y compilación desde el código fuente con Cargo. ffmpeg/ffprobe están incluidos en la imagen Docker y deben estar en PATH para instalaciones de binario. La ruta de la biblioteca es la única entrada requerida; otros ajustes pueden configurarse mediante flag de CLI, variable de entorno o archivo de configuración TOML. Los formatos compatibles se agrupan en dos niveles. El Nivel 1 cubre M4B/M4A (AAC/ALAC), MP3 de archivo único y carpetas de MP3 por capítulo, usando capítulos incrustados o el orden de archivo/pista. El Nivel 2 cubre OGG Vorbis, Opus, FLAC y carpetas de pistas de Nivel 2 por capítulo, usando capítulos incrustados, un archivo lateral .cue (requerido para FLAC) o el orden de archivo/pista. Los archivos laterales de capítulos tienen preferencia sobre los capítulos incrustados en el orden .cue, .ffmeta y luego incrustados. Los archivos protegidos con DRM, como Audible .aax/.aaxc/.aa y OverDrive .odm, se omiten con un aviso registrado. Comportamiento de almacenamiento: los episodios de archivo completo (carpetas MP3 y archivos únicos sin capítulos) se transmiten en su lugar sin copia. Los libros con capítulos materializan el audio en el directorio de datos; el modo predeterminado "full" mantiene una división por capítulo, aproximadamente duplicando el tamaño total para bibliotecas con capítulos, mientras que el modo "saver" mantiene una caché acotada y regenera los capítulos en la primera reproducción. Los ajustes opcionales incluyen PODSPINE_TRANSCODE=aac para recodificar formatos atípicos durante la ingesta, y PODSPINE_REMUX_NON_FASTSTART=true para remultiplexar archivos MP4 sin faststart sin recodificar. Las anulaciones por libro pueden colocarse en un archivo .podspine.toml. El feed de cada libro vive en una URL de capacidad no adivinable (/feed/{feed_id}.xml), con rutas complementarias para el audio del episodio (HTTP Range), la portada y una página de suscripción con enlaces profundos por app y un código QR. La interfaz de navegación enumera la biblioteca, por lo que el README aconseja mantenerla en la LAN o detrás de autenticación de proxy, mientras que las rutas de capacidad son seguras de exponer. Las métricas de Prometheus pueden exponerse en un listener separado. El proyecto está escrito en Rust (edición 2024, MSRV 1.88) como un workspace con un crate por etapa del pipeline. Tiene licencia AGPL-3.0-only y ejecuta ffmpeg/ffprobe como procesos separados. La documentación cubre despliegue, importación en apps de podcast, arquitectura, desarrollo, contribución, seguridad y un changelog.