RSS-Bridge est une application Web PHP.
Il génère des flux Web pour les sites Web qui n'en ont pas.
Instance officiellement hébergée : https://rss-bridge.org/bridge01/
Canal IRC #rssbridge sur https://libera.chat/
Documentation complète
Vous pouvez également rechercher une autre instance publique.
Nécessite au minimum PHP 7.4.
CssSelectorBridge
: grattez un flux à l'aide de sélecteurs CSSFeedMergeBridge
: Combinez plusieurs flux en un seulFeedReducerBridge
: Réduit un flux bruyant d'un certain pourcentageFilterBridge
: Filtrer un flux en excluant/incluant des éléments par mot-cléGettrBridge
: récupère les derniers messages d'un utilisateur GETTRMastodonBridge
: Récupère les statuts d'une instance Mastodon (ActivityPub)RedditBridge
: récupère les publications d'un utilisateur/sous-crédit (avec options de filtrage)RumbleBridge
: Récupère les vidéos de la chaîne/de l'utilisateurSoundcloudBridge
: récupère la musique par nom d'utilisateurTelegramBridge
: récupère les publications d'une chaîne publiqueThePirateBayBridge:
récupère les torrents par recherche/utilisateur/catégorieTikTokBridge
: récupère les publications par nom d'utilisateurTwitchBridge
: récupère les vidéos de la chaîneVkBridge
: récupère les publications de l'utilisateur/du groupeXPathBridge
: grattez un flux à l'aide d'expressions XPathYoutubeBridge
: récupère les vidéos par nom d'utilisateur/chaîne/liste de lecture/rechercheYouTubeCommunityTabBridge
: récupère les publications de l'onglet Communauté d'une chaîne RSS-Bridge peut essentiellement être décompressé dans un dossier Web. Devrait fonctionner instantanément.
Dernier zip : https://github.com/RSS-Bridge/rss-bridge/archive/refs/heads/master.zip (2 Mo)
Ces instructions ont été testées sur une nouvelle VM Debian 12 de Digital Ocean (1vcpu-512mb-10gb, 5 USD/mois).
timedatectl set-timezone Europe/Oslo
apt install git nginx php8.2-fpm php-mbstring php-simplexml php-curl php-intl
# Create a user account
useradd --shell /bin/bash --create-home rss-bridge
cd /var/www
# Create folder and change ownership
mkdir rss-bridge && chown rss-bridge:rss-bridge rss-bridge/
# Become user
su rss-bridge
# Fetch latest master
git clone https://github.com/RSS-Bridge/rss-bridge.git rss-bridge/
cd rss-bridge
# Copy over the default config
cp -v config.default.ini.php config.ini.php
# Give full permissions only to owner (rss-bridge)
chmod 700 -R ./
# Give read and execute to others (nginx and php-fpm)
chmod o+rx ./ ./static
# Give read to others (nginx)
chmod o+r -R ./static
Configuration Nginx :
# /etc/nginx/sites-enabled/rss-bridge.conf
server {
listen 80 ;
# TODO: change to your own server name
server_name example.com;
access_log /var/log/nginx/rss-bridge.access.log;
error_log /var/log/nginx/rss-bridge.error.log;
log_not_found off ;
# Intentionally not setting a root folder here
# autoindex is off by default but feels good to explicitly turn off
autoindex off ;
# Static content only served here
location /static/ {
alias /var/www/rss-bridge/static/;
}
# Pass off to php-fpm when location is exactly /
location = / {
root /var/www/rss-bridge/;
include snippets/fastcgi-php.conf;
fastcgi_read_timeout 45s ;
fastcgi_pass unix:/run/php/rss-bridge.sock;
}
# Reduce spam
location = /favicon.ico {
access_log off ;
}
# Reduce spam
location = /robots.txt {
access_log off ;
}
}
Configuration du pool PHP FPM :
; /etc/php/8.2/fpm/pool.d/rss-bridge.conf
[rss-bridge]
user = rss-bridge
group = rss-bridge
listen = /run/php/rss-bridge.sock
listen.owner = www-data
listen.group = www-data
# Create 10 workers standing by to serve requests
pm = static
pm.max_children = 10
# Respawn worker after 500 requests (workaround for memory leaks etc.)
pm.max_requests = 500
Configuration initiale de PHP :
; /etc/php/8.2/fpm/conf.d/30-rss-bridge.ini
max_execution_time = 15
memory_limit = 64M
Redémarrez fpm et nginx :
# Lint and restart php-fpm
php-fpm8.2 -t && systemctl restart php8.2-fpm
# Lint and restart nginx
nginx -t && systemctl restart nginx
Installez la dernière version.
cd /var/www
composer create-project -v --no-dev --no-scripts rss-bridge/rss-bridge
FAIRE. Voir #3785
Installez en téléchargeant l'image Docker depuis Docker Hub :
# Create container
docker create --name=rss-bridge --publish 3000:80 --volume $( pwd ) /config:/config rssbridge/rss-bridge
Vous pouvez mettre config.ini.php
personnalisé et des ponts dans ./config
.
Vous devez redémarrer le conteneur pour que les modifications personnalisées prennent effet.
Voir docker-entrypoint.sh
pour plus de détails.
# Start container
docker start rss-bridge
Parcourez http://localhost:3000/
# Build image from Dockerfile
docker build -t rss-bridge .
# Create container
docker create --name rss-bridge --publish 3000:80 --volume $( pwd ) /config:/config rss-bridge
Vous pouvez mettre config.ini.php
personnalisé et des ponts dans ./config
.
Vous devez redémarrer le conteneur pour que les modifications personnalisées prennent effet.
Voir docker-entrypoint.sh
pour plus de détails.
# Start container
docker start rss-bridge
Parcourez http://localhost:3000/
Vous pouvez mettre config.ini.php
personnalisé et des ponts dans ./config
.
Vous devez redémarrer le conteneur pour que les modifications personnalisées prennent effet.
Voir docker-entrypoint.sh
pour plus de détails.
docker-compose up
Parcourez http://localhost:3000/
Le déploiement rapide Heroku ne fonctionne actuellement pas. Cela pourrait fonctionner si vous créez ce référentiel et modifiez le repository
dans scalingo.json
. Voir #2688
Apprenez-en davantage dans Installation.
La sortie provient de php-fpm. Il est incapable de lire index.php.
chown rss-bridge:rss-bridge /var/www/rss-bridge/index.php
Modifiez config.ini.php
:
[authentication]
token = "hunter2"
En tant qu'utilisateur actuel :
bin/cache-clear
En tant qu'utilisateur du pont RSS :
sudo -u rss-bridge bin/cache-clear
En tant que root :
sudo bin/cache-clear
bin/cache-prune
# Give rss-bridge ownership
chown rss-bridge:rss-bridge -R /var/www/rss-bridge/cache
# Or, give www-data ownership
chown www-data:www-data -R /var/www/rss-bridge/cache
# Or, give everyone write permission
chmod 777 -R /var/www/rss-bridge/cache
# Or last ditch effort (CAREFUL)
rm -rf /var/www/rss-bridge/cache/ && mkdir /var/www/rss-bridge/cache/
Les fichiers SQLite (db, wal et shm) ne sont pas accessibles en écriture.
chown -v rss-bridge:rss-bridge cache/*
rm cache/*
Créez le nouveau pont dans par exemple bridges/BearBlogBridge.php
:
<?php
class BearBlogBridge extends BridgeAbstract
{
const NAME = ' BearBlog (bearblog.dev) ' ;
public function collectData ()
{
$ dom = getSimpleHTMLDOM ( ' https://herman.bearblog.dev/blog/ ' );
foreach ( $ dom -> find ( ' .blog-posts li ' ) as $ li ) {
$ a = $ li -> find ( ' a ' , 0 );
$ this -> items [] = [
' title ' => $ a -> plaintext ,
' uri ' => ' https://herman.bearblog.dev ' . $ a -> href ,
];
}
}
}
Apprenez-en plus dans l’API du pont.
enabled_bridges[] = *
enabled_bridges[] = TwitchBridge
enabled_bridges[] = GettrBridge
Le mode débogage désactive la majorité des opérations de mise en cache.
enable_debug_mode = true
[cache]
; Cache backend: file (default), sqlite, memcached, null
type = "memcached"
type = "sqlite"
Lorsqu'un pont échoue, RSS-Bridge produira un flux avec un seul élément décrivant l'erreur.
De cette façon, les lecteurs du flux le récupèrent et vous en êtes averti.
Si vous ne souhaitez pas ce comportement, basculez la sortie d'erreur sur http
:
[error]
; Defines how error messages are returned by RSS-Bridge
;
; "feed" = As part of the feed (default)
; "http" = As HTTP error message
; "none" = No errors are reported
output = "http"
Modifiez report_limit
pour qu'une erreur se produise 3 fois avant qu'elle ne soit signalée.
; Defines how often an error must occur before it is reported to the user
report_limit = 3
Le nombre de rapports est réinitialisé à 0 chaque jour.
[authentication]
enable = true
username = "alice"
password = "cat"
Il faudra généralement que les lecteurs de flux soient configurés avec les informations d'identification.
Il peut également être possible d'inclure manuellement les informations d'identification dans l'URL :
https://alice:[email protected]/bridge01/?action=display&bridge=FabriceBellardBridge&format=Html
Voir formats/PlaintextFormat.php
pour un exemple.
Ces commandes nécessitent que vous ayez installé les dépendances dev dans composer.json
.
Exécutez tous les tests :
./vendor/bin/phpunit
Exécutez une seule classe de test :
./vendor/bin/phpunit --filter UrlTest
Exécutez le linter :
./vendor/bin/phpcs --standard=phpcs.xml --warning-severity=0 --extensions=php -p ./
https://github.com/squizlabs/PHP_CodeSniffer/wiki
php -S 127.0.0.1:9001
http://127.0.0.1:9001/
Nous sommes la communauté RSS-Bridge, un groupe de développeurs poursuivant le projet initié par sebsauvage, webmaster de sebsauvage.net, auteur de Shaarli et ZeroBin.
Voir CONTRIBUTEURS.md
RSS-Bridge utilise la mise en cache pour empêcher les services d'interdire votre serveur pour la mise à jour répétée des flux. La durée spécifique du cache peut être différente selon les ponts. Les fichiers mis en cache sont automatiquement supprimés après 24 heures.
RSS-Bridge vous permet de prendre le contrôle total sur les ponts affichés à l'utilisateur. De cette façon, vous pouvez héberger votre propre service RSS-Bridge avec votre collection de ponts préférée !
Mainteneurs actuels (à partir de 2024) : @dvikan et @Mynacol #2519
Il s’agit de la structure des éléments de flux que les ponts sont censés produire.
$ item = [
' uri ' => ' https://example.com/blog/hello ' ,
' title ' => ' Hello world ' ,
// Publication date in unix timestamp
' timestamp ' => 1668706254 ,
' author ' => ' Alice ' ,
' content ' => ' Here be item content ' ,
' enclosures ' => [
' https://example.com/foo.png ' ,
' https://example.com/bar.png '
],
' categories ' => [
' news ' ,
' tech ' ,
],
// Globally unique id
' uid ' => ' e7147580c8747aad ' ,
]
Atom
: Atom feed, à utiliser dans les lecteurs de fluxHtml
: page HTML simpleJson
: JSON, pour consommation par d'autres applicationsMrss
: flux MRSS, à utiliser dans les lecteurs de fluxPlaintext
: texte brut, destiné à être utilisé par d'autres applicationsSfeed
: Texte, séparation par tabulationFile
SQLite
Memcached
Array
Null
Le code source de RSS-Bridge est du domaine public.
RSS-Bridge utilise des bibliothèques tierces avec leur propre licence :
Parsedown
sous licence MITPHP Simple HTML DOM Parser
sous licence MITphp-urljoin
sous licence MITLaravel framework
sous licence MIT Chers sites dits « sociaux ».
Votre mot d'ordre est "partager", mais vous ne souhaitez pas que nous partagions. Vous voulez nous garder dans vos jardins clos. C'est pourquoi vous avez supprimé les liens RSS des pages Web, les avez cachés en profondeur sur votre site Web, ou supprimé entièrement les flux, en les remplaçant par une API propriétaire paralysée ou démente. TE VA MERDE.
Vous n'êtes pas social lorsque vous entravez le partage en supprimant des flux. Vous êtes heureux que des clients créent du contenu pour votre écosystème, mais vous ne voulez pas que ce contenu soit diffusé – un contenu que vous ne possédez même pas. Google Takeout n'est qu'un gadget. Nous voulons que nos données circulent, nous voulons des flux RSS ou Atom.
Nous voulons partager avec des amis, en utilisant des protocoles ouverts : RSS, Atom, XMPP, peu importe. Parce que personne ne veut que votre service avec vos applications utilisant votre API les nourrisse de force. Les amis doivent être libres de choisir le logiciel et le service qu’ils souhaitent.
Nous reconstruisons les ponts que vous avez volontairement détruits.
Ressaisissez-vous : remettez RSS/Atom.