Lorsque vous avez dans notre famille, une personne qui gère un annuaire d'entreprise de la région, cette personne m'a demandé s'il était possible de suivre l'actualité en terme de créations et de fermetures d'entreprises de notre belle région Lorraine.
Et si cette demande m'a été faite, c'est qu'il sait très bien que je m'intéresse à l'open data !
Aujourd'hui je vous présente un vieux script que je n'ai encore jamais présenté ici, qui s'appuie sur des données extraites en Open Data du site data Infogreffe, à partir duquel il vous est possible de générer une URL avec des tas de paramètres que nous allons voir, qui permet de suivre l'actualité en terme de création d'entreprise de la région.
 

L'URL générée pour récupérer ces informations

Comme nous pouvons le voir, cette URL dans laquelle se trouve ces informations, génère des données en Open Data, qui sont toujours issues par jeux de données annuelles. C'est la raison pour laquelle, dans ma chaîne de caractères générant cette url, nous avons la fonction date avec le paramètre Y qui permet, en PHP, simplement de récupérer l'année en cours. Dans cette URL, qui n'est donc pas une constante, c'est le seul petit paramètre auquel il faut faire attention pour générer le flux RSS que nous avons désormais étudier.
L'URL est donc de la sorte : 
$url = "https://opendata.datainfogreffe.fr/api/records/1.0/search/?dataset=entreprises-immatriculees-en-".date("Y")."&q=&sort=date_immatriculation&facet=siren&facet=forme_juridique&facet=code_ape&facet=ville&facet=region&facet=greffe&facet=date_immatriculation&facet=statut&refine.greffe=NANCY";

Comment ça marche ?

Lorsque nous codons l'URL que je génère par concaténation avec l'ensemble des informations que je souhaite récupérer, autrement dit les facets, je vais me retrouver avec un flux au format Json, que je vais donc, au moyen de la commande de décodage d'une chaîne de caractère dans ce format, en extraire les différentes informations renvoyées par le site web. Ces informations sont donc décodées et récupérées dans un tableau, il ne me reste plus qu'à parcourir le tableau et de générer une grande chaîne de caractères dans laquelle je vais, en plus des informations que je souhaite avoir, générer tout ce qui va bien pour que cette chaîne de caractères finales soit en fait un simple flux au format RSS 2.0.
Voilà, je ne m'étendrai pas plus sur le code que j'ai écrit, en effet le reste est relativement clair et simple d'utilisation et de compréhension.
 

Une extension au flux RSS

Comme nous avons désormais un flux au format RSS valide, afin d'avoir ces informations récupérées quotidiennement dans ma boîte mail, j'ai simplement "collé" mon fichier PHP sur un serveur web, de manière à ce qu'il soit en ligne et que j'ai une simple URL. A l'aide du service blogtrottr.com, je lui demande de m'envoyer une fois par jour le contenu de mon flux RSS dans ma boîte mail.
C'est ainsi que j'arrive à avoir un suivi régulier des nouvelles entreprises de ma région, ce paramètre régional n'étant pas très flexible dans la limite où, vous pourrez le constater dans la documentation du flux, les territoires ne sont pas aussi flexibles que nous le voudrions. En effet, j'ai dû me calquer sur un découpage administratif des entreprises, qui est donc passé en paramètre de URL. Nous n'avons pas la main sur cette information, c'est la raison pour laquelle nous devons quand même vérifier manuellement, dans notre cas d'utilisation, si l'ensemble des informations correspondent aux jeux de données que nous souhaitons récupérer.

Le code

<?php
	header( "Content-type: text/xml");
	$url = "https://opendata.datainfogreffe.fr/api/records/1.0/search/?dataset=entreprises-immatriculees-en-".date("Y")."&q=&sort=date_immatriculation&facet=siren&facet=forme_juridique&facet=code_ape&facet=ville&facet=region&facet=greffe&facet=date_immatriculation&facet=statut&refine.greffe=NANCY";
	$a = json_decode(file_get_contents($url),true);
	
	
	echo "<?xml version='1.0' encoding='UTF-8'?>
			<rss version='2.0'>
			<channel>
			<title>Liste des entreprises créées à Nancy</title>
			<link>http://www.sebastien-lhuillier.com</link>
			<description>Liste des entreprises créées à Nancy d'aprés Infogreffes</description>
			<language>FR-fr</language>
			\r\n";

	foreach($a["records"] as $UneEntreprise)
	{
		echo "\t<item>\r\n";
		$chaine .= $UneEntreprise["fields"]["etat"];
		$chaine  .= 	"Dénomination : ".$UneEntreprise["fields"]["denomination"]."<br>\r\n";
		$chaine  .= 	"CodeAPE : ".$UneEntreprise["fields"]["code_ape"]."<br>\r\n";
		$chaine  .= 	"Statut : ".$UneEntreprise["fields"]["statut"]."<br>\r\n";
		$chaine  .= 	"Forme juridique : ".$UneEntreprise["fields"]["forme_juridique"]."<br>\r\n";
		$chaine  .= 	"Secteur d'activité : ".$UneEntreprise["fields"]["secteur_d_activite"]."<br>\r\n";
		$chaine  .= 	"Région : ".$UneEntreprise["fields"]["region"]."<br>\r\n";
		$chaine  .= 	"Département : ".$UneEntreprise["fields"]["num_dept"]."(".$UneEntreprise["fields"]["departement"].")<br>\r\n";
		
		$chaine  .= 	"SIREN : ".$UneEntreprise["fields"]["siren"]."<br>\r\n";
		$chaine  .= 	"Date d'immatriculation : ".$UneEntreprise["fields"]["date_immatriculation"]."<br>\r\n";
		$chaine  .= 	"Adresse : ".$UneEntreprise["fields"]["adresse"]."<br>\r\n";
		$chaine  .= 	"Ville : ".$UneEntreprise["fields"]["ville"]." (".$UneEntreprise["fields"]["code_postal"].")<br>\r\n";
		$chaine  .= 	"Publié le  : ".$UneEntreprise["fields"]["date_de_publication"]."<br>\r\n";
		$chaine  .= 	"Immatriculé le  : ".$UneEntreprise["fields"]["date_immatriculation_origine"]."<br>\r\n";
			
		
		echo 	"<title>".$UneEntreprise["fields"]["denomination"]."</title>\r\n";
		echo 	"<link>".$UneEntreprise["fields"]["fiche_identite"]."</link>\r\n";
		echo 	"<description><![CDATA[".$chaine."]]></description>\r\n";
		echo 	"</item>\r\n"; 
		
	}
		

echo 	"</channel></rss>\r\n"; 


?>

Mon Github

slhuilli1's GitHub repositories

  • ongletvide
    Rajoute une icone sir le content de l'onglet contien la constante [[[onglet_vide]]], constante déclarée dans RL content templater
  • cssmodale
    Create un modal window full CSS
  • nl2br
    ce plugin tranforme automatiquement vos retours à la ligne de vos articles en BR grâce à la fonction PHP dédiée nl2br(). - this plugin automatically transforms your newlines of your articles into BR thanks to the dedicated PHP function nl2br().
  • hidenatifs
    Hide from a links data-natifs="..."
  • targetpdf
    Add "_blank" automatically when href ils a pdf file !
  • zippage
    Zipper tous les PDF internes d'une page Joomla Content
  • legendeimg
    No description
  • antispam
    Plugin qui génère une chaine mais avec le symbole @ dans le css, évitant de se faire aspirer son mail !
  • modallightbox
    No description
  • titrearticle
    Remplace affiche le titre de l'article.
  • provisoire
    Lister des documents marqués comme "provisioires"
  • cssmodal
    Plugin Joomla pour lancer une fenetre modale
  • modalpdf
    No description
  • demandeajoutdoc
    This pligin add a mailto: link info Regular Labs Tabs (for intranet whithout spam)
  • natif
    Ce plugin prend en compte ou pas l'affichage des fichiers natifs (word/excel) en sus de liens vers des PDF
  • nouveau
    Un plugin joomla qui affiche une mention "nouveau" sur un lien hypertext avannt une date butoire - A Joomla plugin that displays a “new” mention on a hyperlink before a deadline
  • lastdocsupdates
    Plugin d'affichage des derniers fichiers modifiés dans un répertoire donné
  • noteitv2
    No description
  • NoCache
    No description
  • addIdToHn
    Ce plugin ajoute automatiquement un id calculé (compté) aux balises Hn
  • ReadFirefoxBookmarks
    reading Firefox bookmak with PHP using SQLite library
  • externalcssandlib
    Add external CSS and javascript libraries in your projets
  • qr
    Ce plugins affiche une liste de questions reponses - This plugin for Joomla show a list of questions, when clicked, the answer is showed
  • dataarchives
  • attachments
    No description
  • mod_vacances
    Ce module Joomla affiche les congés français. Basé sur des OpenDatas du minitère de l'éducation nationale
  • noteit
    Ce plugin permet l'ajout de Post it (format graphique) dans un article
  • nbonlineusers
    No description
  • removehtmlcomment
    Delete all html comment in a joomla article
  • rechercheget
    Recherche en GET dans Joomla Content