Profitez des offres Memoirevive.ch!
cURL, le meilleur ami du web

Il y a quelque temps, François avait relaté sa découverte de la parodie "Tintin en Irak". A cette occasion, il vous avait expliqué comment il avait sauvegardé une à une les images sur son disque dur afin de les regarder tranquillement en diaporama.

Je m'étais alors attelé à la même tâche, mais au bout des 5 images (sur 63 !) ma patience avait déjà atteint ses limites. Or, il y a un adage en informatique:

Lorsque tu veux faire une tâche répétitive, pense à faire un script.

C'est de moi.

En matière de script sur MacOS X, le choix d'un language est très très vaste: Applescript bien sûr, mais aussi shell script, perl, awk, etc... Il suffit alors de remarquer que toutes les images de cette parodie de Tintin se trouvent à l'adresse suivante:

http://www.puread.net/tintin/images/l71p XX.jpg

où XX va de 01 à 63.

Le problème c'est de trouver une application à "scripter". En Applescript, on pourrait sans trop de problèmes demander à Safari d'ouvrir chaque image dans une nouvelle page ou un nouvel onglet, mais il faudrait quand même les sauver une à une dans un dossier. Les heureux possesseurs de Speed Download 2 pourraient le "scripter" afin qu'il télécharge ces images une à une. Mais il y a plus simple et moins cher: cURL

cURL est une commande shell standard, inclue dans pratiquement toutes les distributions Unix, MacOS X y compris. En anglais, "curl" signifie "boucle", mais la manière officielle d'écrire le nom de ce programme fait évidemment ressortir le terme URL, ce qui nous indique ses fonctions orientées vers internet. Nous allons voir comment ça marche et j'en profiterai pour donner quelques informations de base sur le fonctionnement du Terminal (ceux qui connaissent devront me pardonner de m'étaler un peu là-dessus). Pour ceux qui refusent catégoriquement d'utiliser la ligne de commande, allez voir un peu plus loin dans cet article, vous y trouverez un petit programme qui fait tout ça très bien.

Pour les courageux, prêts à dompter le Terminal

Ouvrez donc un Terminal et tapez:

which curl

Il vous répondra: /usr/bin/curl, ce qui signifie que cette commande est belle et bien présente sur votre disque, dans le répertoire "bin" du dossier "usr". Ne cherchez pas ces répertoires dans le Finder, ils sont invisibles.

Voyons un peu comment ça fonctionne. Commençons simplement, tapez donc:

curl http://www.puread.net/tintin/images/l71p01.jpg PremiereImage.jpg

Ceci aura pour effet de sauvegarder l'image "l71p01.jpg" de "Tintin en Irak" sous le nom "PremiereImage.jpg" dans votre dossier "maison". Pour que cette image soit sauvée dans un autre dossier, le plus simple est de s'y déplacer. Pour ce faire, tapez cd (suivit d'un espace) puis glissez sur la fenêtre le dossier dans lequel vous désirez sauvegarder vos images:

Appuyez ensuite sur "retour" et vous serez transporté dans le dossier de votre choix. Refaites alors la même commande que ci-dessus pour télécharger la premiere page de Tintin dans ce répertoire.

Le problème pour l'instant c'est que c'est assez pénible de donner un nom au fichier qui sera sauvé sur votre disque, comme "PremiereImage.jpg" dans mon exemple, ce serait plus simple qu'il garde automatiquement le même nom que le fichier sur internet. Rien de plus simple, il suffit d'ajouter l'option -O (o majuscule), notre commande devient donc:

curl -O http://www.puread.net/tintin/images/l71p01.jpg

et le fichier "l71p01.jpg" sera sauvegardé sur votre disque.

Il serait donc aisé à ce point de faire un shell script qui parcourrait les numéros 01 à 63 et les passerait à la commande "curl". Mais ceci serait inutile car "curl" est bien plus puissant qu'il n'en a l'air. En effet, grâce à lui vous pouvez télécharger un intervalle de fichiers grâce à cette syntaxe:

curl -O "http://www.puread.net/tintin/images/l71p[01-63].jpg"

[01-63] signifie pour "curl" de parcourir tous les nombres de 01 à 63. Attention, les guillemets sont indispensables à cause des crochets, si vous les ommettez vous aurez droit à une erreur.

Vous voyez alors s'afficher une série de lignes de texte indiquant la progression du téléchargement ainsi que la vitesse.

Cette commande "curl" permet de faire bien d'autres choses, vous pouvez spécifier une liste plutôt qu'un intervalle, ou combiner les deux:

http://www.any.org/archive[1996-1999]/volume[1-4]part{a,b,c,index}.html

vous imaginez bien la puissance de cette syntaxe !

Vous pourrez également reprendre un téléchargement interrompu, télémonter ("uploader") des fichiers et bien d'autres choses. En plus du protocole HTTP, curl supporte HTTPS, FTP, GOPHER, DICT, TELNET, LDAP et FILE.

Pour les frileux de la ligne de commande

Plusieurs programmes ont été conçu pour interfacer la commande "curl". Par exemple le magazine A Vos Macs ! à fait un programme nommé Avosmac2Curl, mais celui-ci se limite à télécharger, interrompre et reprendre un téléchargement. Un autre programme est beaucoup plus intéressant, il s'agit de iCurl. Une fois lancé, il vous présente une interface très sobre comprenant deux onglets: "Single File" et "Multiple Files". Le premier onglet vous propose donc d'entrer l'adresse d'un unique fichier, d'entrer une destination puis départ !

Pour cette fonction, il faut avouer qu'Avosmac2Curl est meilleur puisqu'il vous permet de reprendre un téléchargement interrompu. Mais là où réside toute la force d'iCURL c'est dans l'onglet "Multiple Files":

Dans la capture ci-dessus on voit ce qu'il faudrait entrer pour télécharger toutes les pages de "Tintin en Irak". Vous aurez compris le fonctionnement pour un cas plus général.

Bien entendu, ce ne sera jamais aussi puissant que la commande "curl" utilisée dans le Terminal, iCURL ne vous propose d'entrer qu'un seul intervalle de nombres, mais c'est suffisant dans bien des cas.

Voilà pour ce petit tour d'horizon qui évitera à François (et à d'autre j'espère) d'attraper de la corne sous les doigts en déplaçant 63 images à la suite sur le bureau.

Aucun commentaire pour l'instant…