# curl (encore et toujours)



## Nathalex (17 Mai 2002)

Salut,
Je suis un grand fan de la commande curl depuis que je l'ai découverte. Jusqu'à aujourd'hui, j'arrivais à faire tout ce que je voulais avec (je sais, mon mérite est faible).

Mais aujourd'hui, j'ai été confronté au problème : la série de fichiers (avec des numéros) que je veux télécharger se trouve dans des répertoires différents dont les noms dépendent du nom du fichier.

Exemple : 
\200201\200201pap.pdf
\200202\200202pap.pdf etc....

C'est donc un truc du style :
\2002xx\2002xxpap.pdf, xx allant jusqu'à 24 je crois

Des idées pour que curl m'aide dans cette affaire ?

Merci d'avance

Alexis


----------



## Gwenhiver (17 Mai 2002)

Je pense que tu peux toujours utiliser :
curl "http://www.domaine.com/2002[01-24]/2002[01-24]pap.pdf"

Je ne peux pas tester, là, mais je pense qu'il ira chercher tous les fichiers que tu veux, plus 23*23 fois la page 404. C'est pas terrible, d'accord...
Mais comme c'est toujours la même page, tu n'auras pas grand chose à supprimer à la fin.


----------



## Nathalex (18 Mai 2002)

J'y avais bien pensé mais, outre que ce soit pas pratique du tout (576 téléchargements pour récupérer 24 fichiers), comme il conserve le nom du fichier qu'il essaie de télécharger,  le /200201/200201pap.pdf (qui est 1 fichier correct) est écrasé au passage suivant par /200202/200201pap.pdf (qui lui, est faux).

et avec l'option -o, je vois pas comment m'en sortir.

faut vraiment rien avoir d'autre à réfléchir


----------



## Gwenhiver (18 Mai 2002)

Alors il te faut un petit shell-script :


```

```

Tu copies-colles dans TextEdit, tu passes en mode texte, tu enregistres, et tu fais un

```

```
sur le script (où curlscript est le script).

Ensuite, 
	
	



```

```
 et c'est parti


----------



## Einbert (18 Mai 2002)

Tu ne trouves pas qu'il est plus simple de faire
_@ i++_
à la place de
_set i = `expr $i + 1`_
 ??

Il faudrait aussi penser à réécrire curl, je veux dire que si le fichier à d/l n'existe pas ou qu'il fait 0k , ben hop, je teste le fichier suivant...Faudra que j'y pense une fois que je trouverai le temps (ben après les exa tiens  
	

	
	
		
		

		
		
	


	







 ) !

++


----------



## Gwenhiver (18 Mai 2002)

<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Einbert:
*Tu ne trouves pas qu'il est plus simple de faire*<HR></BLOCKQUOTE>

Ah ben si, c'est plus simple Mais tu sais, je n'écris pas souvent de shells-scripts, et @ i++, je ne connaissais pas Mais bon, je suis content d'appendre


----------



## Nathalex (18 Mai 2002)

La vache ! C'est là qu'on se sent tout petit.... Chapeau !

Bon, maintenant, je vais devoir attendre mardi pour tester tout ça. Je vous tiens au courant...


----------



## Gwenhiver (18 Mai 2002)

Au fait, avec le nom du fichier, ça fera plutôt :


```

```


----------



## Nathalex (21 Mai 2002)

Bon, j'ai essayé et c'est un peu bizarre :
Sur le premier truc que j'ai essayé, j'ai "connection refused" alors que je tape la ligne curl à la main, le fichier se charge bien.
Un site est-il capable de bloquer le téléchargement de fichier via des scripts ?
Mon premier essai était : 
curl -O www.federalreserve.org/pubs/feds/2002/20020"$i"/20020"$i"pap.pdf  avec i allant de 01 à 24

Alors, j'ai fait un second essai sur 
curl -O http://laurence.bouvard.free.fr/montblanc_160502/P51600"$i".JPG  avec i allant de 10 à 73 (images de montagnes splendides au demeurant)

Pour ce dernier, j'ai bien conscience que le script n'est pas utile mais je voulais essayer de comprendre pourquoi l'autre ne fonctionnait pas. Et là, il n'en télécharge qu'une, comme si le i n'incrémentait pas    
	

	
	
		
		

		
		
	


	




J'aimerais bien comprendre ce qui se passe parce que j'ai l'impression qu'on doit pouvoir faire des trucs très forts pour peu qu'on sache les utiliser!

[21 mai 2002 : message édité par Nathalex]


----------



## Gwenhiver (21 Mai 2002)

En fait non, wget et curl n'ont pas exactement la même syntaxe. De toute façon, avec curl, il suffit de faire

curl .JPG]http://laurence.bouvard.free.fr/montblanc_160502/P5160[01-73].JPG


----------



## Nathalex (21 Mai 2002)

Ben ben merci gwen !
Il doit exister un seuil où il faut arrêter de solliciter les très gentils modérateurs et je pense l'avoir atteint.

Pour la première erreur, le "org" doit être changé en "gov". Du coup, la connexion est acceptée mais rien à faire, il ne veut pas itérer le i : j'ai beau faire 20 copier/coller de ton script. Rien à faire.

Bref, c'est peut-être une question de shell et là, ça me dépasse complètement...

Sinon, pour le coup du téléchargement de deux fichiers (pour la montagne), c'est peut-être qu'il faut mettre l'option -o avant ladresse et non après.


----------



## Gwenhiver (22 Mai 2002)

<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Nathalex:
*Ben ben merci gwen !
Il doit exister un seuil où il faut arrêter de solliciter les très gentils modérateurs et je pense l'avoir atteint.*<HR></BLOCKQUOTE>

Mais non... Je regarderai tout-à-l'heure.
Pour l'histoire du shell, tu lances le script sous Mac OS X ou sur un autre Unix ?


----------



## Nathalex (22 Mai 2002)

J'utilise tout ça sous MacOSX....


----------



## Gwenhiver (22 Mai 2002)

Ben écoute, je ne comprends pas trop là

Je lance un nouveau document TextEdit, et je colle le code suivant :


```

```

J'enregistre au format texte en tant que "test", je vais dans le terminal faire un
chmod u+x test
dans le dossier contenant test, puis
./test
Ça fonctionne au poil J'ai téléchargé trois fichiers pendant que j'écrivais. Je m'arrête à cause de mon petit modem et de mon forfait déjà un peu asphyxié, mais a priori, ça se passe bien chez moi

[Edit: Copiés-collés foireux]

[21 mai 2002 : message édité par Gwenhiver]


----------



## Gwenhiver (22 Mai 2002)

Pour le premier problème, je pense que ça vient du fait que tu as omis le "http://". Pour le deuxième, il faut que je regarde.


----------



## Nathalex (22 Mai 2002)

la version sans http:// était en fait un second essai après que la version "avec" ait échoué...


----------



## Gwenhiver (22 Mai 2002)

Bon alors j'ai vérifié.
Pour le premier lien, le script ne fonctionne pas, mais le navigateur non plus... Le serveur renvoie effectivement "Connection refused" -- j'utilise IE 5.0 pour PC, là...

Pour le deuxième lien, le script suivant fonctionne chez moi :


```

```

Je ne sais pas pourquoi, je récupère deux fichiers, P5160012.JPG et P5160012.JPG.1 par exemple. C'est le .1 qui contient réellement l'image.


----------



## Gwenhiver (22 Mai 2002)

Pour les photos de montagne, tu peux aussi faire : 

curl -r -l1 --no-parent -A.JPG http://laurence.bouvard.free.fr/montblanc_160502/ 

(Tu récupères recursivement le premier niveau, sans remonter à la page parente, tous les fichiers se terminant par .JPG. A refaire avec un -A.jpg ensuite, parce que les dernières images ont le .jpg en miniscule.)

J'ai testé avec wget. C'est du même style que curl, et a priori la syntaxe est la même.


----------

