

Je n’aime pas faire du travail en double. Ainsi par exemple, lorsque je m’abonne à un blog car je le trouve intéressant, j’aimerais pouvoir l’afficher aussi dans ma blogroll. La solution s’appelle OPML.
Mon idée : récupérer de façon quotidienne mon fichier OPML de Google Reader et le stocker dans un répertoire sur mon serveur. La blogroll serait générée depuis ce fichier à chaque fois que quelqu’un aille la consulter. Et ainsi, à 24h près, elle serait toujours à jour.
Mais voila. La grosse merde, le gros bordel, le retour sur terre, c’est le suivant : pour accéder à votre fichier OPML il faut être authentifié et les choses un peu plus complèxe, car j’ai du essayer quelque chose que je n’avais jamais fait avant : utiliser cURL avec des cookies.
Le principe est simple : remplir les paramètres du formulaire de connexion Google avec CURL et stocker ce que celui-ci renvoie pour la cookie dans un fichier. Ensuite, réutiliser ce fichier comme cookie lorsque je veux accéder à l’URL de mon fichier OPML.
Si vous avez Google Reader, l’URL de votre fichier OPML est le suivant :
http://www.google.com/reader/public/subscriptions/user/<user_id>/
Vous pouvez obtenir votre userid en cliquant sur « All Items » ou « Tous mes éléments », un URL apparaîtra ensuite, votre user id est le numéro se trouvant entre les %2F, donc dans mon cas ‘06937166373900766291’:
http://www.google.com/reader/view/#stream/user%2F06937166373900766291%2Fstate%2Fcom.google%2Freading-list
Et voici donc le petit script PHP pour me connecter et récupérer le fichier OPML. Attention, j’utilise ici des noms de fichier absolu pour la cookie et le fichier final, la raison est simple : c’est parce que je compte également faire appel à ce script via un job crontab :
<?
$email="barney.stinson@gmail.com";
$password="br0";
$url = "https://www.google.com/accounts/ServiceLoginAuth?service=reader";
$params = "service=reader";
$params.= "&Email=".urlencode($email);
$params.= "&Passwd=$password";
$params.= "&continue=http://www.google.com/reader/";
$params.= "&hl=en";
$params.= "&nui=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookie.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://www.google.com/reader/public/subscriptions/user/06937166373900766291/");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEJAR, '/tmp/cookie.txt');
curl_setopt($ch2, CURLOPT_COOKIEFILE, '/tmp/cookie.txt');
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch2);
curl_close($ch2);
$fp = fopen("/home/emich.be/public_html/misc/google-reader-subscriptions.xml","w");
fputs($fp,$data);
fclose($fp);
unlink("/tmp/cookie.txt");
?>
Remplacez évidemment le login, mot de passe et user id par les vôtres. J'ai choisi de mettre ma cookie dans le dossier /tmp, afin qu'il ne soit pas visible depuis l'exterieur.
A noter que ce script peut également être écrit en bash script en utilisant directement cURL. J’ai opté pour l’option php car pas tout le monde a un serveur avec accès en ligne de commande à disposition.

Appel reçu cet après-midi :
Bonjour monsieur, nous sommes la société x et nous vous appelons au nom de la commune de Schaerbeek. Nous aimerions prendre rendez-vous avec vous pour venir voir vos serrures et vous sensibiliser sur les potentiels risques de cambriolage, phénomène croissant et qui inquiète votre commune. Quand seriez-vous disponibles pour un rendez-vous ?
Bon. Chronologiquement, ce qui suit de mon côté :
Soit. Pas besoin de conseils, moi. Il y a déjà une porte chiante en bas, une proprio qui entend tout au rez-de-chaussée et une nymphomane quinquagénaire au premier étage à survivre avant d’arriver chez moi et de se faire défoncer la gueule par mes 2 léopards et @flexyflow (à condition d’avoir signé pour l’option casse moi la nuque si j’ose te déranger dans ton sommeil).
Samedi dernier avait lieu une nouvelle édition du Barcamp, cette fois à Anvers et organisé par Anne. Je n'ai pas vraiment à vous expliquer ce qu'est un Barcamp. Un Barcamp, c'est une espèce de conférence où le principe est simple: des présentations mais pas de spectateurs. En d'autres mots, chaque personne qui s'y inscrit doit contribuer à l'événement en donnant lui-même aussi une présentation ou en aidant l'organisation de l'une ou l'autre manière.
J'aurais surtout aimé la présentation de Koen Delvaux, sur l'automatisation de photos aériennes avec un avion téléguidé et son projet d'auto-pilote via GPS. Une autre présentation que je retiens est celle de Steffest, sur ses expériences avec l'Arduino et celle sur les @twunch par Tom Klaasen. Il y avait certainement aussi d'autres présentations intéressantes mais avec les sessions en parallelle, c'est difficile de se couper en 3 morceaux et d'être partout en même temps.
Ma présentation était "build your own Google Latitude", ou comment écrire un programme pour GSM codé en J2ME qui utilise les modules Location (JSR-179) pour envoyer votre position GPS vers un serveur web (avec démo).
Malheureusement, le nombre de participants à ce Barcamp qui se sont désistés en dernière minute était élevé, mais cela n'a pas empêché que ce Barcamp était une réussite. Surtout un grand merci à Anne et aux sponsors: Nucleus, Devia, Chocolateque, 10to1, The Parking Lot et Nespresso.
Récapitulons, il y avait déjà :
Ajoutons à cela la superbe nouvelle mesure :
Je veux rien dire, mais ce jeu de ‘qui est le plus flamand de tous’ commence de plus en plus à ressembler aux années 30. Et puis ils s’étonnent qu’ils ont un problème d’image. A quand le premier camp de travail pour ceux qui ne savent pas prononcer "schild en vriend" correctement ?!
Attention: je parle de la politique flamande et pas des flamands en général, même si ils ont forcément été mis au pouvoir par quelqu'un, non ?
Et non, je ne traduirais pas ce billet en néerlandais. Trop la flemme et pas envie de recevoir des réactions digne des commentaires chez Luc Van Braekel.

En même temps ça fait démo sur le sujet dont j'ai parlé: la géolocalisation et le positionnement en direct.
Pfff. Je ne sais vraiment pas quoi vous raconter les gars. J’ai trop la flemme d’écrire quelque chose. Mais tout va très bien hein.

Je suis le temps d'un transit dans la capitale du monde. Je suis particulièrement amusé pas le magasin souvenirs d'Obama.
A chaque fois que je pars quelque part c'est pareil! Toute les manoeuvres sont bonnes pour me retenir.
La bande originale de Slumdog Millionaire par A R Rahman est, comme le film, à conseiller. N’en abusez par contre pas trop, car certaines chansons risquent de rester coller, comme ‘Ringa Ringa’ dans la vidéo ci-dessus.