# sloweb partie 2 : les flux
2024-03-14T12:29:58Z

Pour la lecture des flux, sloweb s'appuie sur des outils déjà existants.
Quel que soit la méthode choisie, l'objectif est de récupérer les nouveaux articles à lire sur la machine et les garder en cache.

La plupart des lecteurs de flux fonctionnent ainsi : on les ouvre, ils récupères les nouveautés.

Cependant, je n'ai pas toujours prévu de lire mes flux quand j'allume l'ordinateur.
De plus, pour éviter d'être distrait, je préfère rester dans un contexte de texte brut.
Enfin, il y a la question des phlogs et gemlogs, des protocoles peu souvent supportés par les lecteurs de flux.
(oui ploum, je sais, il y a offpunk ;))

## Quels outils?

J'ai tout d'abord utilisé rss2email, qui envoie les articles par mail.
=> https://github.com/rss2email/rss2email

Cependant, je lui ai trouvé 2 défauts:
* La gestion des abonnements est un peu pénible, surtout si je charge mon serveur de faire tourner rss2email.
* Les articles étant des mails, je suis trop tenté d'ouvrir mon application de messagerie pour vérifier s'il y a de nouveaux articles. C'est de ma faute, mais je retombe dans les travers du "plus, encore, maintenant!".

À la place, je lui préfère sfeed et son interface éventuelle qui rappelle newsboat:

=> https://codemadness.org/sfeed.html
=> https://codemadness.org/sfeed_curses-ui.html

sfeed est justement très modulaire, et s'entoure de plusieurs petits outils faciles à articuler entre eux. On peut d'ailleurs très bien faire de sfeed un équivalent de rss2email si on le souhaite, tout est expliqué dans le readme.

Sur mon ordinateur, sfeed m'apporte les avantages suivants :

* Récupération des flux avec curl, ou une autre commande. Ça supporte ainsi aussi le protocole gopher, donc les phlogs. Il ne devrait pas être trop difficile d'y ajouter les gemlogs, mais j'ai écrit un script dédié pour ça.
* Il garde en mémoire les articles déjà lus dans sfeed-curses. On peu les lire ou ouvrir dans le navigateur. Le lien de l'article est affiché, je peux l'utiliser pour l'envoyer à d'autres outils (voir Exemple).
* Il permet de filtrer les flux et d'effectuer des remplacements du type youtube > invidious, ou encore retirer des liens publicitaires... On peut même choisir de télécharger les vidéos des abonnements youtubes avec yt-dlp.
* La mutliplicité des outils pour lire me plaît : dmenu, mail, texte, ...

Il reste limité à un affichage en mode texte, parfois gênant pour des articles contenant des images (xkcd, APOD) que j'aimerais pouvoir voir même hors-ligne.

Pour cela, le script sloweb_forlater est là.

## Un exemple avec APOD

Si vous ne connaissez pas, sachez que la NASA publie chaque jour une photo d'astronomie avec des commentaires d'astronomes profesionnels.
=> https://apod.nasa.gov/apod/

Ça n'a d'intérêt que si on a l'image sous la main.
Lorsqu'une nouvelle entrée apparaît dans le flux, je passe l'URL à forlater:

```
forlater https://apod.nasa.gov/apod/ap240314.html
```

Ce script est très court.
Il va faire en sorte que la commande sloweb_forlater soit exécutée la prochaine fois que sloweb tourne, avec l'aide de sloweb_cmd déjà présenté dans l'article précédent.

```
sloweb_cmd "cd \"${SLOWEB_BOX}\"; sloweb_forlater \"$1\""
```

La commande sloweb_forlater sera alors exécutée dans le dossier ~/sloweb/box pour enregistrer la page apod ainsi que l'image.

## sloweb_forlater
sloweb_forlater est un des outils dont je suis le plus content car il permet d'avoir une version locale d'une page web/gemini/gopher.

Dans le cas d'une page web, je sais que wget sait déjà aspirer un site. Cependant, les liens vers le ressources ne sont pas réécris.
Autement dit, si la page appelle un script vers googleapis, ou encore si elle demande le chargement d'une image avec un lien du type "https://bla/blop/blup.jpg", alors impossible de charger l'image si on est hors-ligne.

sloweb_forlater se charge donc de réécrire les liens vers les images. Ces liens sont des liens locaux du type "./chemin_vers_limage.jpg".

Pour télécharger les ressources, je vais appel à "sloweb_anyget", qui n'est qu'un "wrapper" afin d'appeler la bonne commande de téléchargement selon si le protocole esthttp, gopher ou gemini. À la même occasion, si le lien est une vidéo youtube, alors yt-dlp va la télécharger.

Ainsi, je peux lire les pages et médias gardés dans la "box" sans avoir besoin d'un accès à internet. Cela fera appel au script sloweb_whatsinthebox, mais c'est pour un futur article ;)

---
Une réaction?

Envoyez votre commentaire par mail (votre adresse mail sera retirée des entêtes cachée):
=> mailto:bla@bla.si3t.ch?subject=sloweb-part-2-feeds

Voici quelques instructions pour utiliser la liste de diffusion et recevoir les réponses à vos messages:
=> /log/_commentaires_.txt