Fusionner, mélanger plusieurs flux RSS en un seul

Publié le 23 mars 2012 - Developpement Web. Tags : , ,

J’ai récemment agrémenté l’un de mes sites perso d’une rubrique « news », afin de pouvoir lui donner un peu plus de vie quand il n’y a rien d’autre à se mettre sous la dent au niveau des autres rubriques.

Le problème, c’est que ce site est à la fois disponible en Français et en Anglais, et que je n’avais nullement l’intention de traduire tous mes articles dans la langue de Shakespeare (ou le concept aurait été au final contre-productif) ni envie de laisser cette rubrique vide pour les visiteurs non-francophones. Bref, une fois n’est pas coutume, j’ai utilisé une combinaison de flux RSS externes comme solution salvatrice. Sur le modèle de l’excellent tweeterfeed, vous permettant de twitter automatiquement via une sélection de plusieurs flux RSS (en passant, 800 followers en 2 ans pour 10 minutes de mise en place au total sur un compte de test…), je me suis mis à la recherche d’un script en PHP (autre que SimplePie.org – beaucoup trop complexe pour mes besoins), me permettant de faire le sale boulot à ma place.

C’est ainsi que je suis tombé sur A32, un script utilisant le célèbre parser Magpie RSS et la classe PHP feedcreator, vous permettant de combiner, mélanger et fusionner plusieurs flux RSS en un seul en quelques lignes. Même s’il y a 2/3 petites choses à revoir, l’idée est bonne : vous parsez les flux RSS avec que vous triez avec usort(). Le résultat est mis en cache jusqu’à la prochaine mise à jour, par CRON en ce qui me concerne.

En clair, ce script fait ni plus ni moins office  de colle entre les 2 libraires :

  • Création d’un tableau de flux RSS
  • MagpieRSS est utilisé pour une lecture en boucle des flux
  • Ces flux sont ensuite triés et mélangés
  • Feedcreator produit le résultat en affichant le nouveau flux

Voici les principaux éléments à modifier :

$RSS_CACHE = "/tmp/rsscache";

Il s’agit du dossier qui contiendra le flux RSS mis en cache (pensez à autorisez l’écriture dans ce dossier)

$RSS_CACHE_EXP = 3600;

Délai d’expiration du cache (en secondes).

$FEED_LIST = array(
	'http://a32.me/feed/',
	'http://a32.me/feed/?lang=ru'
);

Tableau listant vos flux RSS à mélanger

$rss->saveFeed("RSS2.0", $RSS_CACHE . "/feed.xml");

Format de sortie du flux. Différentes option sont possibles (se référer à la doc de feedcreator), en ce qui me concerne, le RSS2.0 me convient parfaitement.

Bien sûr il est possible d’utiliser cette technique pour fusionner plusieurs de ses propres flux RSS, tout comme il est possible d’utiliser xml2array et des tables temporaires…


Articles sur ce thème :