Si comme moi vous appréciez la lecture dans un agrégateur de flux, vous avez sûrement déjà remarqué que certains sites n'utilisent les flux RSS que comme un "appel" vers l'article complet sur le site. Le flux ne contenant alors qu'un résumé de l'article.
C'est le cas de Rue89... Et il se trouve que je trouve leur site extrêmement lourd et fouillis...
Que faire alors ? Succomber à une crise d’épilepsie quotidienne ? Se priver du contenu de Rue89 ?
Que nenni...
Mettez-moi ce flux RSS sous stéroïdes !
Appelons le python à la rescousse. L'idée est la suivante :
- Créer un proxy qui se chargera de récupérer le flux original;
- ce proxy récupérera ensuite tous les articles référencés, en extraira la substance (en enlevant toutes les fioritures) et l'injectera à la place de chaque résumé du flux original ;
- ce proxy renverra le flux "enrichi" au client RSS, comme si de rien n'était.
Ainsi, n'importe quel client RSS n'aura lus qu'à demander le flux au proxy au lieu de le demander directement chez Rue89.
En bonus, il faut prévoir un système de cache pour éviter de demander à chaque fois tous les articles chez Rue89, inutile de surcharger leur serveur.
Pour se faciliter la tâche, on piochera quelques fromages sur les étagères du cheeseshop :
- cherrypy qui permet d'écrire un service web en quelques lignes
- lxml qui permet de d'utiliser des sélecteurs CSS pour extraire vite fait ce qu'on veut dans une page HTML.
Le résultat est un petit script de 100 lignes : feedsteroids.py
On lance le serveur avec
$ python feedsteroids.py /tmp/feedcache.dat
Il ne reste qu'à configurer le client RSS pour aller pêcher ses fraîches sur http://localhost:8080/rue89
J'ai fait le script de manière à pouvoir facilement "doper" d'autres flux… Happy hacking !