Récupérer la dernière image instagram
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.com
1.
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>
.
Je vois aussi que l'objet pImage_<i>
contient un attribut src
dont la
valeur est l'url de l'image.
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.
-
D'accord, j'ai remplacé « chaton » par un nom au hasard ! ↩