Human Substance

Cet article vous a plu ? Pourquoi ne pas le partager ?

Longtemps, j’ai développé des sites web (et me couchais à des heures tardives pour cela). Aussi bien sur l’intranet de Dassault Systèmes, que durant la grande époque de golfworld.fr, dont je gérais aussi bien le front que le back. Javascript, Perl, puis PHP, étaient mes amis du quotidien. Plus tard, j’ai poursuivi avec le site professionnel des laboratoires Multaler, ou des outils internes aussi bien chez ces derniers qu’au sein de mon agence, Else & Bang, et cette fois avec des outils un peu plus modernes (Python, MySql, tout autant que WordPress).

Aussi, quand Yann m’a demandé si je pouvais lui donner un petit coup de main pour concevoir un agrégateur de flux RSS, je n’ai pas hésité une seconde. Cela m’a pris quelques heures le weekend dernier, mais le résultat est, je crois, à la hauteur.

Le besoin était le suivant. Le collectif 100% humain, que jai rejoint il y a quelques mois, cherchait à mettre en avant les contenus produits par ses membres, des blogueurs de tout bord, sur un site dédié. Jusque là, Yann s’était appuyé sur un composant WordPress qui agrégeait les contenus provenant des sites des différents membres du site, mais cela ne lui convenait pas trop. La présentation ne mettait pas suffisamment en valeur les membres. De plus, le rythme de production variant d’un membre à l’autre, et l’agrégateur simple dont il disposait n’affichant que la liste des derniers articles par ordre chronologique, les sites les plus prolixes occupaient la quasi totalité de la page, au détriment des blogueurs qui mettent plus de temps à pondre des articles,

Un cahier des charges ultra-simple

Sur la base d’un schema produit par Yann – qui est vraiment un expert en la matière, comme vous pouvez le voir ci-dessus – j’ai donc conçu un mini agrégateur, dans le style de Netvibes, de la manière suivante:

  • une base WordPress pour pouvoir ajouter facilement des pages et des articles,
  • le plugin Pods (un plugin génial) pour gérer simplement une base d’objets représentant des blogs, avec des champs simples tels que le nom de l’auteur, l’adresse du site ou celle du flux RSS,
  • quelques lignes de JavaScript pour lire à la volée (durant le chargement de la page) les derniers articles du flux RSS (3 par défaut) et les envoyer dans une série de div disposés en rangées de trois éléments.

CORS inside

Rien de très compliqué a priori, à part un écueil que je n’avais pas anticipé : le CORS (Cross-origin resource sharing). Sous cet acronyme se dissimule un mécanisme qui vise à sécuriser la navigation des internautes, en empêchant les pages web de faire des requêtes HTTP vers des sites provenant d’autres domaines depuis un script JavaScript. J’ignorais qu’un tel mécanisme existait, et il a fallu trouver une solution de contournement. Heureusement, Yann, toujours alerte sur tout ce qui touche au web, a déniché un service dédié pour débloquer ce mécanisme. Mais ce système impose un cache ou possède un limiteur de requêtes qui empêchait le rafraîchissement correct des flux.

La solution s’est imposée toute seule : j’ai écrit mon propre proxy en php, en un rien de temps (avec l’aide de ChatGPT, bien plus utile pour accélérer le développement que pour produire du contenu au kilomètre…).

<?php
// Check if URL parameter is set
if(isset($_GET['url'])) {
    // Get the URL from the parameter
    $url = $_GET['url'];

    // Fetch the content of the URL
    $rss_content = file_get_contents($url);

    // Check if the content was fetched successfully
    if ($rss_content !== false) {
	// Set the content type header to RSS feed
        header('Content-Type: application/rss+xml');

	// Output the RSS feed content
        echo $rss_content;
    } else {
	// If unable to fetch content, return an error message
	http_response_code(500);
        echo "Error fetching RSS feed content.";
    }
} else {
    // If URL parameter is not set, return an error message
    http_response_code(400);
    echo "URL parameter is missing.";
}
?>

Joli coup, baron

Le résultat est en ligne depuis dimanche soir, sur le site humansubstance.com. Le site propose donc les 3 derniers articles diffusés sur les blogs des membres. Pour l’instant, nous ne sommes pas très nombreux, et les performances de chargement à la volée ne sont pas pénalisantes. Si jamais on multiplie par 50 ou par 100 le nombres de membres, il faudra peut-être repenser l’interface, en affichant une sélection aléatoire de blogs.

Enfin, un petit widget est disponible en bas de page, pour permettre à chaque membre de faire de la pub pour le collectif (il est affiché sur la droite de cette page). On y retrouve le log, un lien vers la charte, un lien vers les membres, et un lien intitulé I feel lucky qui permet de découvrir un site au hasard parmi ceux du collectif. Et un code html à copier/coller sur son propre site.

Et si vous voulez rejoindre le collectif 100% humain, vous savez où nous trouver …

Cet article vous a plu ? Pourquoi ne pas le partager ?