Bubo Reader est un lecteur de flux hyper minimaliste (RSS, Atom, JSON) que vous pouvez déployer sur votre propre serveur, Netlify en quelques étapes ou Glitch en encore moins d'étapes ! Le but du projet est de générer une page Web affichant une liste de liens provenant d'une collection de flux organisés par catégorie et par site Web. C'est ça.
Il porte le nom de ce robot hibou idiot du Choc des Titans (1981).
Vous pouvez en savoir plus sur ce projet sur mon blog :
npm install
pour installer les dépendances.feeds.json
pour inclure les catégories et les liens vers les flux que vous aimeriez voir.npm run build:bubo
C'est ça! Vous devriez maintenant avoir une page statique avec des liens vers le dernier contenu de vos flux dans le dossier public
, prête à être diffusée.
Les pièces statiques :
conf/feeds.json
- un fichier JSON contenant les URL de votre flux séparées en catégories.config/template.html
- un modèle Nunjucks qui vous permet de modifier la façon dont les flux sont affichés. Cela peut être modifié par tout ce que vous voulez – voir ci-dessous.public/style.css
- un fichier CSS pour styliser la sortie de votre flux.public/index.html
- Le fichier HTML qui est automatiquement généré lorsque Bubo est exécuté.Le moteur :
src/index.ts
- Le script principal que vous exécutez lorsque vous souhaitez créer une nouvelle version de Bubo. Il récupérera automatiquement le dernier contenu de vos flux et créera un nouveau fichier statique sur public/index.html
.src/renderer.ts
— Le moteur de rendu qui charge Nunjucks, le modèle et comprend comment traiter les données du flux entrant. Vous préférez autre chose ? C'est ici qu'il faut le changer !src/utilities.ts
— Une variété d'utilitaires d'analyse et de normalisation pour Bubo, cachés pour essayer de garder les choses propres. Dans le fichier index.ts
principal, vous trouverez deux valeurs qui vous permettent de regrouper et de limiter vos demandes de flux :
MAX_CONNECTIONS
dicte le nombre maximum de requêtes qu'un lot peut avoir en même temps.DELAY_MS
dicte le délai entre chaque lot. La configuration par défaut n'est ni traitement par lots ni limitation , car MAX_CONNECTIONS
est défini sur Infinity
. Si vous souhaitez modifier Bubo pour qu'il ne récupère qu'un seul flux à la fois et chaque seconde, vous pouvez définir ces valeurs sur :
const MAX_CONNECTIONS = 1 ;
const DELAY_MS = 1000 ;
Si vous souhaitez limiter les choses à 10 requêtes simultanées toutes les 2,5 secondes, vous pouvez le définir comme suit :
const MAX_CONNECTIONS = 10 ;
const DELAY_MS = 2500 ;
En pratique, je n'ai jamais vraiment rencontré de problème en laissant MAX_CONNECTIONS
défini sur Infinity
mais cela semble être une protection raisonnable pour la conception.
Le plus rapide est de remixer le projet sur Glitch : https://glitch.com/edit/#!/bubo-rss
Il existe également une branche glitch
sur ce dépôt si vous préférez commencer par là.
Modifiez simplement quelques flux dans le fichier ./config/feeds.json
et le tour est joué ! Si vous souhaitez modifier le style ou le modèle, vous pouvez modifier respectivement le fichier ./public/style.css
ou le fichier ./config/template.html
.
config/feeds.json
pour gérer vos flux et catégories Les paramètres de déploiement doivent être automatiquement importés à partir du fichier netlify.toml
. Il ne vous reste plus qu'à confirmer et vous êtes prêt à partir !
Pour garder vos flux à jour, vous souhaiterez configurer un Build Hook pour votre site Netlify et utiliser un autre service pour lui envoyer une requête ping de temps en temps afin de déclencher une reconstruction. Je suggère d'examiner :
Si vous disposez déjà d'un serveur exécutant Linux et d'une certaine expérience en ligne de commande, il peut être plus simple de configurer une tâche cron.
Vous pouvez voir des démos en direct ici :
Si vous avez trouvé cela utile, pensez à me parrainer ou à parrainer ce projet.
Si vous préférez l'exécuter sur votre propre serveur, pensez à utiliser l'un de ces liens d'affiliation pour configurer une micro-instance sur Linode, Digital Ocean ou Vultr.
Voici quelques sites Web utilisant Bubo Reader :
N'hésitez pas à partager si vous souhaitez être présenté !