Sobre el proyecto

RSS-Bridge es una aplicación web PHP que genera feeds web (RSS/Atom y otros formatos) para sitios web que no ofrecen uno. Se distribuye bajo la UNLICENSE (dominio público) y requiere PHP 7.4 o superior. En la documentación se hace referencia a una instancia oficial alojada y a una lista de instancias públicas. ## Qué hace El proyecto incluye una gran colección de "bridges" — actualmente 447 según el README —, cada uno dirigido a un sitio específico o a una técnica genérica de scraping. Entre los ejemplos enumerados se incluyen: - Scraping genérico: CssSelectorBridge (selectores CSS), XPathBridge (expresiones XPath) - Manipulación de feeds: FeedMergeBridge (combinar feeds), FeedReducerBridge (reducir feeds ruidosos), FilterBridge (incluir/excluir por palabra clave) - Redes sociales y medios: MastodonBridge, RedditBridge, GettrBridge, TelegramBridge, TikTokBridge, TwitchBridge, RumbleBridge, SoundcloudBridge, YouTubeBridge, YouTubeCommunityTabBridge - Otros: ThePirateBayBridge (torrents por búsqueda/usuario/categoría) Los bridges se pueden habilitar o deshabilitar selectivamente, de modo que un operador puede exponer solo un subconjunto elegido. Cuando un bridge falla, el comportamiento predeterminado es emitir un feed que contiene un único elemento de error para que los lectores de feeds muestren el problema; esto se puede cambiar a errores HTTP o suprimirse, y los errores se pueden acumular con un límite de informes antes de notificarse. ## Opciones de instalación El README documenta varias vías de despliegue: - Alojamiento compartido tradicional: descomprimir en una carpeta web. - Debian 12 con nginx y php-fpm: pasos detallados, incluidos creación de usuario, permisos, bloque de servidor nginx, pool de PHP-FPM y ajustes de php.ini. - Caddy: el mismo pool de PHP-FPM con un ejemplo de Caddyfile. - Composer: `composer create-project -v --no-dev --no-scripts rss-bridge/rss-bridge`. - Imagen de Docker Hub `rssbridge/rss-bridge`, o compilación local desde el Dockerfile, o docker-compose. Se pueden montar un `config.ini.php` personalizado y bridges en `./config`, y el contenedor debe reiniciarse para que los cambios surtan efecto. - Botones de despliegue en un clic para Scalingo, Heroku (se indica que actualmente no funciona), Cloudron y PikaPods. ## Configuración y funcionamiento Se puede copiar un `config.default.ini.php` a `config.ini.php`. Entre las opciones documentadas se incluyen: - Autenticación: un valor de token, o HTTP Basic Auth con nombre de usuario/contraseña (las credenciales también pueden incrustarse en la URL). - Backends de caché: File (predeterminado), SQLite, Memcached, Array, Null. La duración de la caché puede diferir por bridge, y el almacenamiento en caché pretende evitar que los servicios bloqueen el servidor por actualizaciones repetidas de feeds. - Scripts de mantenimiento: `bin/cache-clear` y `bin/cache-prune` para borrar todos los elementos de caché o los caducados. - Modo de salida de errores: feed, http o none, además de `report_limit` para exigir fallos repetidos antes de informar. - Habilitación de bridges: `enabled_bridges[] = *` para todos, o enumerar nombres individuales de bridges. Las secciones de solución de problemas cubren "Access denied" (propiedad de archivos), ruta de FileCache no escribible, archivos de base de datos SQLite de solo lectura y tabla de almacenamiento ausente (eliminar archivos de caché). ## Formatos de salida y estructura de elementos Los formatos de salida compatibles son Atom, Html, Json, Mrss, Plaintext y Sfeed (separado por tabulaciones). Se espera que los bridges produzcan elementos con campos como uri, title, timestamp (unix), author, content, enclosures, categories y un uid globalmente único. Se pueden añadir nuevos formatos de salida siguiendo el ejemplo de `formats/PlaintextFormat.php`. ## Desarrollo Los nuevos bridges son clases PHP que extienden `BridgeAbstract` con `declare(strict_types=1);` al principio del archivo. El README muestra un ejemplo mínimo de BearBlogBridge usando `getSimpleHTMLDOM` y `collectData()`. Las herramientas de desarrollo incluyen PHPUnit para pruebas y PHP_CodeSniffer para linting, con dependencias de desarrollo instaladas mediante Composer. Se puede iniciar un servidor local mínimo con `php -S 127.0.0.1:9001`. ## Antecedentes del proyecto El proyecto fue iniciado por sebsauvage y continúa a cargo de la comunidad de RSS-Bridge; los mantenedores a partir de 2024 se indican como @dvikan y @Mynacol. El README incluye una sección "Rant" que aboga por feeds abiertos y en contra de los jardines amurallados que eliminan los enlaces RSS. Entre las bibliotecas de terceros utilizadas se incluyen Parsedown, PHP Simple HTML DOM Parser, php-urljoin y el framework Laravel, todas bajo la Licencia MIT.