Je ne veux pas me créer de compte instagram pour diverses raisons. Je veux quand même pouvoir voir les photos de l'un ou l'autre compte sans devoir aller voir sur le site.

Il n'existe pas de flux Atom /RSS chez instagram. Leur idée (je pense) est d'encourager (forcer) les utilisateurs à installer l'application. Il n'est donc pas possible de voir lorsqu'une nouvelle photo est postée sur un compte. De plus lorsque je me rends sur une page instagram, je ne « sais » pas (facilement) sauvegarder l'image.

Comment faire ?
Ça devient un peu technique.

Curl me permet de récupérer du contenu web mais il ne permet pas d'exécuter du javascript. Si je regarde un peu le contenu de la page générée par instagram, je vois pas mal de javascript. En fait le body de la page html n'est qu'un script javascript.

Pour exécuter du javascript en ligne de commande, c'est Phantomjs la solution. Dans les exemples, je vois qu'il est facile de parcourir le DOM de la page et d'accéder aux éléments de la pages. Par exemple (issu du site officiel), pour récupérer le titre de la page, il suffit d'écrire:

javascript var page = require('webpage').create(); page.open(url, function(status) { var title = page.evaluate(function() { return document.title; }); console.log('Page title is ' + title); phantom.exit(); });

Pour l'exercice, choisissons une page instagram au hasard en entrant dans un moteur de recherche une requête de la forme chaton site:instagram.com1.

En parcourant le DOM de la page instagram (en utilisant Firebug par exemple) je vois que les div contenant les images s'appellent pImage_<i>.

screenshot-instagram-1.png

Je vois aussi que l'objet pImage_<i> contient un attribut src dont la valeur est l'url de l'image.

screenshot-instagram-2.png

C'est (presque) fini. On a toutes les infos nécessaires pour écrire un script qui sera lancé toutes les minutes / heures c'est selon. J'adapte le code javascript d'exemple pour obtenir cette url et je fais ensuite un wget afin d'obtenir l'image. J'écris un petit script qui sera pris en charge par cron. Ce script vérifie que l'image n'est pas déjà téléchargée et, sinon, la télécharge.

La solution complète se trouve sur github | instagramget.

Enjoy !


Crédit photo chez DeviantArt par WargusEstor. L'originalité d'un fantôme.


  1. D'accord, j'ai remplacé « chaton » par un nom au hasard !