API Tumblr
7 March 2011 par chidia_s
Tumblr est une plateforme de blog vous permettant de créer un blog simplement et rapidement. Vous pourrez explorer par vous-même les capacités du blog en allant directement sur Tumblr. Au moment même où j'écris ces lignes, cette plateforme ne compte pas moins de 2,5 milliards d'articles et 11 millions de blogs en ligne. Je vous propose donc dans cette article de nous intéresser à l'API de cette plateforme.
Introduction
Comme indiqué précédemment Tumblr est une plateforme de blog permettant en quelque clics de pouvoir poster un article. Vous pouvez aussi, comme dans Twitter, suivre certains blogs afin de rester informé de leurs évolutions et tout comme dans facebook, vous pourrez "aimer" une publication. Il existe un système de viralité sur Tumblr grâce au "Reblogging" qui permet à un utilisateur de poster sur son propre blog, un article qu'il a vu sur un autre blog. Je ne m'attarde pas sur la présentation de la plateforme Tumblr, un article sur le blog mti est entièrement consacré à cela. Je passe donc directement aux fonctionnalités de l'API tumblr.
Les fonctionnalités de l'API.
Les fonctionnalités principales de l'API Tumblr permettent d'effectuer les tâches suivantes :
- Lecture sur un blog.
- Écriture sur un blog.
- Récupération d'informations.
- Application iphones.
En utilisant l'API il vous sera donc facile de récupérer les Posts des amis que vous suivez. Il vous sera aussi possible d'indiquer certain paramètre pour savoir si vous "aimez" ou non un article, vous pourrez aussi "aimez" ou "ne plus aimer" un article. Il vous sera aussi possible de récupérer les images, vidéos ou musiques attachées à un article. Vous récupérerez donc l'url vers le média de votre choix et vous pourrez effectuer le traitement voulu.
En ce qui concerne l'écriture, vous pourrez, grâce à l'API Tumblr, éditer, supprimer ou effectuer du "rebblogging" sur un article.
Les fonctionnalités de l'api réservées aux applications Iphone vous permettront de pouvoir récupérer les informations relatives à votre tableau de bord. Vous pourrez ainsi suivre les derniers articles de vos amis grâce à votre téléphone mobile.
Toutes ces fonctionnalités pourront vous être utiles pour pouvoir intégrer par exemple tous les articles que vous aimez sur votre site ou si vous voulez pouvoir suivre l'actualité de votre compte Tumblr via votre propre plateforme. Sans plus attendre passons à quelque exemple d'utilisation de cette API.
Tous les résultats renvoyés par l'API Tumblr sont au format JSON ou XML, cela permet donc un traitement simple de l'information. Il suffira par la suite d'utiliser un parser XML ou de récupérer l'objet JSON pour pouvoir exploiter les données afin d'effectuer le traitement voulu.
Il est donc possible d'utiliser l'API Tumblr de plusieurs manières, en utilisant du Javascript ou du PHP et en récupérant du XML ou un objet JSON. Pour la suite de cet article, j'illustrerai l'API Tumblr en utilisant du PHP et un retour de l'information sous forme d'un XML.
Vous trouverez plus d'informations sur la page Tumblr consacrée à l'API.
Vous retrouverez sur cette page le format de retour XML que Tumblr renvoi.
Quelques exemples.
Récupération des 10 derniers articles postés
Pour notre premier exemple d'utilisation nous allons récupérer les informations relatives aux 10 derniers articles poster par vos amis sur tumblr (Ici j'appelle "amis" les personnes que vous "suivez" ou même que vous avez en "follow" sur Tumblr.).
$request_data = http_build_query ( array ( 'email' =&> 'chidia_s@epita.fr', 'password' =&> 'mot_de_passe', 'num' =&> '10', 'start' =&> '0' ) ); $curl_init = curl_init ('http://www.tumblr.com/api/dashboard'); curl_setopt($curl_init, CURLOPT_POST, true); curl_setopt($curl_init, CURLOPT_POSTFIELDS, $request_data); curl_setopt($curl_init, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($curl_init); $return_code = curl_getinfo($curl_init, CURLINFO_HTTP_CODE); curl_close($curl_init); $xml = simplexml_load_string ($result); foreach ($xml->posts->post as $post) { //traitement de l'information pour un post. } if ($return_code == 201){ echo 'Succès'; } else if ($return_code == 403){ echo 'Mauvais identifiants'; } else { echo 'Resultat : ' . $result; }
Ce script mérite quelques explications. Tous d'abord pour se connecter à l'API de Tumblr on utilise la bibliothèque CURL qui permettra de structurer sa requête et d'attribuer des attributs en 'POST'.
Tous d'abord on se connecte à son compte Tumblr en précisant son "email" et son "password". Ensuite il suffit de renseigner les variables "num" pour préciser le nombre d'articles que l'on souhaite récupérer. La variable "start" quant à elle permet de donner un point de départ, ici nous voulons les dix derniers articles, "start" vaut donc "0" et "num" dix.
Après avoir renseigné ces variables, il faut initialiser la requête qui sera faite. Ici nous voulons récupérer les dix derniers articles de nos amis, il faut donc se connecter à son tableau de bord (sur votre tableau de bord ou "dashboard" sont affichés toutes les publications des utilisateurs que vous avez en "follow"), nous utilisons donc l'url "http://www.tumblr.com/api/dashboard". Cela donne :
$curl_init = curl_init ('http://www.tumblr.com/api/dashboard');
Ensuite nous précisons que nos variables sont passées en 'POST' :
curl_setopt($curl_init, CURLOPT_POST, true);
Puis nous ajoutons nos variables à notre requête :
curl_setopt($curl_init, CURLOPT_POSTFIELDS, $request_data);
Afin de pouvoir traiter le résultat nous précisons que nous voulons avoir un code de retour :
curl_setopt($curl_init, CURLOPT_RETURNTRANSFER, true);
Et enfin nous exécutons la requête :
$result = curl_exec($c);
Il est possible de récupérer un code permettant de vérifier si la requête s'est bien exécuté ou non, en fonction de ce code nous pourrons ensuite identifier et résoudre le problème. Nous récupérons le code ainsi:
$return_code = curl_getinfo($curl_init, CURLINFO_HTTP_CODE);
Après avoir exécuté la requête il faut traiter les informations retournées, ici nous devons donc traiter du XML renvoyé dans la variable $xml. Pour se faire nous pouvons utiliser la bibliothèque SimpleXML qui permettra de parcourir simplement les informations retournées. Ainsi il nous est possible d'itérer sur les dix derniers articles postés par les personnes que nous suivons sur Tumblr.
Note : Il faut savoir que la variable "num" ne pourra pas excéder les 250.
Écriture d'un article.
Pour pouvoir écrire un article il faut tout d'abord renseigner plusieurs informations. Toutes les informations sont visibles sur la documentation de l'API.
Les informations obligatoires et minimales à renseigner pour pouvoir poster un article sont :
- L'adresse mail du compte.
- Le mot de passe.
- Le type d'article.
En fonction du type d'article plusieurs variables deviennent obligatoires, prenons ici l'exemple d'un article simple, de type "regular", il faudra renseigner le "body" et le "title" pour pouvoir le poster. Il faudra donc procéder ainsi :
$request_data = http_build_query( array( 'email' =&> 'chidia_s@epita.fr', 'password' =&> 'mot_de_passe', 'type' =&> 'regular', 'title' =&> 'The title', 'body' =&> 'The body' ) ); $curl_init = curl_init('http://www.tumblr.com/api/write'); curl_setopt($curl_init, CURLOPT_POST, true); curl_setopt($curl_init, CURLOPT_POSTFIELDS, $request_data); curl_setopt($curl_init, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($curl_init); $status = curl_getinfo($curl_init, CURLINFO_HTTP_CODE); curl_close($curl_init);
Afin de ne pas répéter mon code précédent, je n'ai pas effectué l'étape de vérification de la bonne exécution de la requête. Cette requête aura donc pour effet de poster ceci sur votre blog :
Ecriture d'un article avec une photo.
Ici plusieurs paramètre vont changer, tous d'abord le "type" ne sera plus "regular" mais "photo" et, l'attribut source devra être renseigné, nous aurons donc :
$request_data = http_build_query( array( 'email' =&> 'chidia_s@epita.fr', 'password' =&> 'mot_de_passe', 'type' =&> 'photo', 'source' =&> 'http://www.di.ens.fr/~pnguyen/images/logo_epita.gif' ) );
Ceci aura pour effet de poster un article avec la photo renseignée. Ici nous aurons donc :
Poster un article avec une vidéo
Pour poster un article avec une vidéo, ce n'est pas plus compliqué. Prenons par exemple une vidéo hébergée sur youtube. Il vous suffira de récupérer le code fourni par youtube pour placer la vidéo sur votre site web. Une fois ce code en votre possession, vous n'aurez qu'à procéder ainsi :
$request_data = http_build_query( array( 'email' =&> 'chidia_s@epita.fr', 'password' =&> 'mot_de_passe', 'type' =&> 'video', 'embed' =&> 'code_youtube' ) );
Le résultat sera le suivant :
Poster un article avec un média audio.
Pour poster un article avec un média audio attaché, il faut encore une fois procéder de la même manière. Nous changeons ici le type d'article et nous renseignons un média audio hébergé sur un serveur externe :
$request_data = http_build_query( array( 'email' =&> 'chidia_s@epita.fr', 'password' =&> 'mot_de_passe', 'type' =&> 'audio', 'externally-hosted-url' => 'http://download.theforce.net/r2_christmas_song.mp3') );
Le résultat sera le suivant :
Il est donc simple de manipuler cette API afin d'ajouter des médias de type audio, vidéo ou photo. Ainsi vous pourrez alimenter votre blog facilement en ajoutant des articles à la volée depuis votre propre site web. Le but ici est de diffuser votre information sur Tumblr. Les personnes qui vous suivent sur Tumblr auront accès à tous vos articles et pourront donc visionner vos médias sur votre blog.
Conclusion.
L'utilisation de l'API Tumblr reste très simple et permet de pouvoir diffuser un grand nombre de choses très facilement. Ainsi vous aurez un double avantage à utiliser cette API, d'une part vous pourrez partager vos articles et médias sur la plateforme très simplement, mais en plus vous pourrez récupérer les articles que vous trouvez pertinents et les réutiliser sur votre propre site web, tout ceci de manière automatique en passant par l'API.




16 January 2012 à 22:09
Bonjour,
Merci beaucoup pour votre post, par contre je me pause une question. De quel manière est-il possible de réutiliser ces informations pour les affichez sur ça page web. Pour affichez les articles postez ?
d’avance merci
11 April 2012 à 16:23
Normalement, il y a un code fourni dans la page widget de tumblr, c’est du java script, exemple :”" on peut définir le nombre de posts en ajoutant juste après js : “?num=10″, si vous souhaitez 10 messages… par contre, je n’arrive pas encore a trouver le code qui permet de démarrer les messages, si je ne veux pas commencer au dernier mais à partir d’un message posté il y a plus longtemps…