Bonjour à tous.
J'ai trouvé récemment un site qui proposait de télécharger des MP3 (en toute légalité). Seulement le nombre de ces MP3 est élevé (une cinquantaine) et sont nommés selon le motif suivant :
01.MP3
02.MP3
03.MP3
...
48.MP3
49.MP3
Alors, malin comme je suis, je me dit qu'au lieu de faire "clic-droit / télécharger" sur chaque lien, je vais utiliser la commande curl.
En effet, d'après la page du manuel http://www.hmug.org/man/1/curl.html on peut spécifier un motif dans l'url à rapatrier pour télécharger plusieurs fichiers en une seule commande.
http://www.hmug.org/man/1/curl.html
<font class="small">Code:</font><hr /><pre> You can specify multiple URLs or parts of URLs by writing
part sets within braces as in:
http://site.{one,two,three}.com
or you can get sequences of alphanumeric series by using
[] as in:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt (with lead-
ing zeros)
ftp://ftp.letters.com/file[a-z].txt
It is possible to specify up to 9 sets or series for a
URL, but no nesting is supported at the moment:
http://www.any.org/archive[1996-1999]/vol-
ume[1-4]part{a,b,c,index}.html</pre><hr />
Comme je désire enregistrer ces fichiers sous un nom spécifique, j'utilise l'option -o qui permet de renommer les fichiers.
<font class="small">Code:</font><hr /><pre> -o/--output <file>
Write output to <file> instead of stdout. If you
are using {} or [] to fetch multiple documents, you
can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the
current string for the URL being fetched. Like in:
curl http://{one,two}.site.com -o "file_#1.txt"
or use several variables like:
curl http://{site,host}.host[1-5].com -o "#1_#2"
You may use this option as many times as you have
number of URLs.</pre><hr />
Si je comprends bien le manuel, en utilisant leur premier exemple
curl http://{one,two}.site.com -o "file_#1.txt"
cela devrait donner deux fichiers nommés respectivement
file_one.txt
file_two.txt
Donc en fait pour chaque fichier, le #1 est remplacé par la partie placée dans les accolades de l'url étant actuellement téléchargée.
J'ai bon ?
Je voudrais utiliser la commande suivante :
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -o "chanson_#1.mp3"
ce qui devrait donc, si j'ai bien compris, télécharger tous les morceaux de 01.MP3 à 49.MP3 dans mon dossier courant, et chaque morceau serait renommé en "chanson_" puis le numéro correspondant et ".mp3"
chanson_01.mp3
...
chanson_02.mp3
Or je n'ai rien de tout ça. La commande curl a des comportements bizarres.
Avec la commande
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -o "chanson_#1.mp3"
il me dit "No match".
Pourtant, si je fais
curl http://www.musique.com/mp3/01.MP3 -O
ça passe sans problème (l'option -O télécharge le fichier dans le répertoire courant avec le nom d'origine).
Alors je me dis "tant pis pour le renommage" et je tappe alors
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -O
Et là de nouveau "No match".
Je fais des tests avec les accolades, pour voir.
En tapant
curl http://www.musique.com/mp3/{48,49}.MP3 -o "chanson_#1.mp3"
il m'enregistre le fichier 48.MP3 sous le nom "chanson_1.mp3" et dès que le téléchargement de la première est terminée, il m'affiche toutes sortes de caractères cabalistiques. En fait j'ai l'impression que la seconde chanson est bien téléchargée mais qu'au lieu de la rediriger dans un fichier (comme le spécifie la commande) il la crache sur la sortie standard.
J'ai le même problème avec la commande
curl http://www.musique.com/mp3/{48,49}.MP3 -O
Bref, je ne comprends rien, soit la commande est buggé, soit c'est OS X qui est buggé, soit c'est moi qui n'a rien compris du tout de que dalle à la façon d'utiliser curl.
Voilà, c'est long comme sujet (surtout que c'est mon premier), mais j'ai essayé de décrire au mieux. Si vous pouviez m'aider, ce serait sympa.
Merci d'avoir lu jusqu'au bout.
J'ai trouvé récemment un site qui proposait de télécharger des MP3 (en toute légalité). Seulement le nombre de ces MP3 est élevé (une cinquantaine) et sont nommés selon le motif suivant :
01.MP3
02.MP3
03.MP3
...
48.MP3
49.MP3
Alors, malin comme je suis, je me dit qu'au lieu de faire "clic-droit / télécharger" sur chaque lien, je vais utiliser la commande curl.
En effet, d'après la page du manuel http://www.hmug.org/man/1/curl.html on peut spécifier un motif dans l'url à rapatrier pour télécharger plusieurs fichiers en une seule commande.
http://www.hmug.org/man/1/curl.html
<font class="small">Code:</font><hr /><pre> You can specify multiple URLs or parts of URLs by writing
part sets within braces as in:
http://site.{one,two,three}.com
or you can get sequences of alphanumeric series by using
[] as in:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt (with lead-
ing zeros)
ftp://ftp.letters.com/file[a-z].txt
It is possible to specify up to 9 sets or series for a
URL, but no nesting is supported at the moment:
http://www.any.org/archive[1996-1999]/vol-
ume[1-4]part{a,b,c,index}.html</pre><hr />
Comme je désire enregistrer ces fichiers sous un nom spécifique, j'utilise l'option -o qui permet de renommer les fichiers.
<font class="small">Code:</font><hr /><pre> -o/--output <file>
Write output to <file> instead of stdout. If you
are using {} or [] to fetch multiple documents, you
can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the
current string for the URL being fetched. Like in:
curl http://{one,two}.site.com -o "file_#1.txt"
or use several variables like:
curl http://{site,host}.host[1-5].com -o "#1_#2"
You may use this option as many times as you have
number of URLs.</pre><hr />
Si je comprends bien le manuel, en utilisant leur premier exemple
curl http://{one,two}.site.com -o "file_#1.txt"
cela devrait donner deux fichiers nommés respectivement
file_one.txt
file_two.txt
Donc en fait pour chaque fichier, le #1 est remplacé par la partie placée dans les accolades de l'url étant actuellement téléchargée.
J'ai bon ?
Je voudrais utiliser la commande suivante :
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -o "chanson_#1.mp3"
ce qui devrait donc, si j'ai bien compris, télécharger tous les morceaux de 01.MP3 à 49.MP3 dans mon dossier courant, et chaque morceau serait renommé en "chanson_" puis le numéro correspondant et ".mp3"
chanson_01.mp3
...
chanson_02.mp3
Or je n'ai rien de tout ça. La commande curl a des comportements bizarres.
Avec la commande
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -o "chanson_#1.mp3"
il me dit "No match".
Pourtant, si je fais
curl http://www.musique.com/mp3/01.MP3 -O
ça passe sans problème (l'option -O télécharge le fichier dans le répertoire courant avec le nom d'origine).
Alors je me dis "tant pis pour le renommage" et je tappe alors
curl .MP3]http://www.musique.com/mp3/[01-49].MP3 -O
Et là de nouveau "No match".
Je fais des tests avec les accolades, pour voir.
En tapant
curl http://www.musique.com/mp3/{48,49}.MP3 -o "chanson_#1.mp3"
il m'enregistre le fichier 48.MP3 sous le nom "chanson_1.mp3" et dès que le téléchargement de la première est terminée, il m'affiche toutes sortes de caractères cabalistiques. En fait j'ai l'impression que la seconde chanson est bien téléchargée mais qu'au lieu de la rediriger dans un fichier (comme le spécifie la commande) il la crache sur la sortie standard.
J'ai le même problème avec la commande
curl http://www.musique.com/mp3/{48,49}.MP3 -O
Bref, je ne comprends rien, soit la commande est buggé, soit c'est OS X qui est buggé, soit c'est moi qui n'a rien compris du tout de que dalle à la façon d'utiliser curl.
Voilà, c'est long comme sujet (surtout que c'est mon premier), mais j'ai essayé de décrire au mieux. Si vous pouviez m'aider, ce serait sympa.
Merci d'avoir lu jusqu'au bout.