curl (encore et toujours)

Nathalex

Membre expert
Club iGen
8 Juin 2001
2 385
254
50
Dans l'Ain, pas trop loin de Lyon
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
 
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.
 
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
wink.gif
 
Alors il te faut un petit shell-script :

Bloc de code:

Tu copies-colles dans TextEdit, tu passes en mode texte, tu enregistres, et tu fais un
Bloc de code:
sur le script (où curlscript est le script).

Ensuite,
Bloc de code:
et c'est parti…
 
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
grin.gif
grin.gif
) !

++
 
<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…
smile.gif
 
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...
 
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
confused.gif


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]
 
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.
 
<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 ?
 
Ben écoute, je ne comprends pas trop là…

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

Bloc de code:

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]
 
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 :

Bloc de code:

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.
 
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.