Automatisation avec curl

Automatisation avec curl - Shell/Batch - Programmation

Marsh Posté le 26-03-2014 à 20:37:11    

Bonjour,
 
Je souhaite utiliser la commande curl pour télécharger des photos hébergées par un site de la NASA.
J'ai essayé la commande suivante :
 
 curl -Of 'http://mars.jpl.nasa.gov/msl-raw-images/msss/00580/mcam/0580MR002407[016-179]0400[011-174]E01_DXXX.jpg'
 
Les valeurs entre crochets permettent de parcourir les intervalles indiqués.
Le problème est que curl considère cela comme 2 boucles for imbriquées. Or pour chaque valeur du premier crochet, il n'y a qu'une valeur du second crochet qui correspond à une image. Par exemple, le chemin des premières images est :
 
http://mars.jpl.nasa.gov/msl-raw-i [...] 1_DXXX.jpg
http://mars.jpl.nasa.gov/msl-raw-i [...] 1_DXXX.jpg
http://mars.jpl.nasa.gov/msl-raw-i [...] 1_DXXX.jpg
 
Il faudrait réussir à incrémenter de 1 les 2 boucles en même temps, sans que curl parcourt toutes les possibilités (ça en fait quand même plus de 26000 ici).
 
J'aurais aimé faire un script bash pour résoudre le problème, mais mes connaissances en bash sont très limitées.
Quelqu'un pourrait-il m'aider ?
 
Merci d'avance !


---------------
Thomas
Reply

Marsh Posté le 26-03-2014 à 20:37:11   

Reply

Marsh Posté le 27-03-2014 à 04:39:19    

salut,
 

Code :
  1. $ ind_1=( $(printf '%.3d\n' {16..179}) )
  2. $ ind_2=( $(printf '%.3d\n' {11..174}) )
  3. $ for i in ${!ind_1[@]}; do echo "curl http://addr_${ind_1[i]}0400${ind_2[i]}.jpg"; done


 
Edit:
en plus court:

Code :
  1. for ((x=16,y=11;x<=176&&y<=174;x++,y++)); do echo "curl http://addr/${x}0400${y}.jpg"; done


Message édité par Profil supprimé le 27-03-2014 à 04:43:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed