[solved] Geschicktes Downloaden mit Curl

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Boccaccio
Beiträge: 79
Registriert: 02.04.2005 14:31:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Genf
Kontaktdaten:

[solved] Geschicktes Downloaden mit Curl

Beitrag von Boccaccio » 29.09.2010 16:24:31

Hallo zusammen!

Ich stehe vor folgendem Problem: Ich möchte Dateien automatisiert mit curl herunterladen. Diese finden sich unter Adressen http://www.blablabla.de/Verzeichnis_001/Datei_001_1.jpg wobei die Zahlen 001 sowohl bei Verzeichnis als auch bei Dateinamen nun durchwandern sollen, sprich von 001 bis z.B. 746.

Wenn ich das ganz naiv mit curl probiere,

Code: Alles auswählen

curl www.blablabla.de/Verzeichnis_[001-746]/Datei_[001-746]_1.jpg -o #1#2.jpg
dann versucht er ja jede Kombination von Zahlen bei Verzeichnis und Dateiname, ohne aber bei beiden nur identische Paare zu kombinieren. Gibt es eine Möglichkeit, letzteres Verhalten zu erzielen? Klar ich könnte erst mal alles runterladen und dann die nichtexistierenden Dateien wieder löschen, aber das ist ja auch nicht im Sinne des Erfinders.

Schönen Dank schon mal im voraus.
Zuletzt geändert von Boccaccio am 30.09.2010 15:53:59, insgesamt 1-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Geschicktes Downloaden mit Curl

Beitrag von rendegast » 29.09.2010 18:06:29

Scheint mir nur "zu Fuß" zu funktionieren:

Code: Alles auswählen

$ cat Liste.curl
http://www.blablabla.de/Verzeichnis_001/Datei_001_{1,2}.jpg
http://www.blablabla.de/Verzeichnis_002/Datei_002_{1,2}.jpg
...

$ curl $(< Liste.curl)
jedoch gibt das 700 Attribute, wohl zu lang?


Dann gibt es wget:

Code: Alles auswählen

$ cat Liste.wget
./Verzeichnis_001/Datei_001_1.jpg
./Verzeichnis_002/Datei_002_1.jpg
...
./Verzeichnis_001/Datei_001_2.jpg
./Verzeichnis_002/Datei_002_2.jpg
...

$ wget -B http://www.blablabla.de/ -i Liste.wget
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Boccaccio
Beiträge: 79
Registriert: 02.04.2005 14:31:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Genf
Kontaktdaten:

Re: Geschicktes Downloaden mit Curl

Beitrag von Boccaccio » 29.09.2010 18:47:17

Hmm erstmal danke für die schnelle Antwort... da ja beide Varianten "zu Fuß" sind, scheiden sie wohl aus. Die 700 waren jetzt eine willkürlich gegriffene Zahl, soweit ich das aktuell überblicke, ist es sogar eher eine Größenordnung mehr. Kann man eventuell in der Shell etwas zusammenzimmern, was mir die Adressen automatisch erzeugt? For i=1 to 746...

diggerchen
Beiträge: 115
Registriert: 15.01.2005 22:35:26

Re: Geschicktes Downloaden mit Curl

Beitrag von diggerchen » 29.09.2010 19:58:29

Code: Alles auswählen

for i in {1..700}
do
    j=00$i
    j=${j:(-3)}
    curl www.blablabla.de/Verzeichnis_001/Datei_$j_1.jpg -o $j.jpg
done
Sieht vielleicht nicht hübsch aus aber wenn du das noch etwas ausbaust, vielleicht ne zweite Schleife einschachtelst, dann müsstest du das so hinbekommen... glaube ich :lol:

Boccaccio
Beiträge: 79
Registriert: 02.04.2005 14:31:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Genf
Kontaktdaten:

Re: Geschicktes Downloaden mit Curl

Beitrag von Boccaccio » 30.09.2010 11:51:19

So, ich habe das mit dem Script gerade mal getestet, leider funktioniert es noch nicht ganz wie gewünscht. Zwar lädt curl etwas herunter (ich hoffe mal das richtige :D), aber es wird dann alles unter dem gleichen Namen gespeichert wenn ich als Output-Option -o V$j_1.jpg angebe. Wenn ich nur $j.jpg angebe, funktioniert es, aber ich würde den Dateinamen schon gerne etwas mehr variieren können.

EDIT: curl lädt leider auch noch nicht das richtige herunter. Wenn ich statt curl mal echo benutze um mir die URLs ausgeben zu lassen, erhalte ich http://bla.de/_R001/R.jpg statt http://bla.de/_R001/R001.jpg, wenn in der For-Schleife echo http://bla.de/_R$j/R$j_001.jpg benutzt wird, d.h. es gibt wohl Probleme, das $j mehrfach zu verwenden.

diggerchen
Beiträge: 115
Registriert: 15.01.2005 22:35:26

Re: Geschicktes Downloaden mit Curl

Beitrag von diggerchen » 30.09.2010 13:02:37

Du könntest uns dein Script ja mal zeigen...

Boccaccio
Beiträge: 79
Registriert: 02.04.2005 14:31:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Genf
Kontaktdaten:

Re: Geschicktes Downloaden mit Curl

Beitrag von Boccaccio » 30.09.2010 13:11:49

Eine gute Idee :D

Hier die Variante mit echo, die schon die falschen URLs liefert,
for i in {1..100}; do j=00$i; j=${j:(-3)}; echo http://blabla.de/_R$j/R$j_001.jpg; done
und hier die Variante mit curl
for i in {1..100}; do j=00$i; j=${j:(-3)}; curl http://blabla.de/_R$j/R$j_001.jpg -o $j_001.jpg; done

diggerchen
Beiträge: 115
Registriert: 15.01.2005 22:35:26

Re: Geschicktes Downloaden mit Curl

Beitrag von diggerchen » 30.09.2010 13:55:10

Mach's so:

Code: Alles auswählen

for i in {1..100}; do j=00$i; j=${j:(-3)}; echo http://blabla.de/_R${j}/R${j}_001.jpg; done

Boccaccio
Beiträge: 79
Registriert: 02.04.2005 14:31:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Genf
Kontaktdaten:

Re: Geschicktes Downloaden mit Curl

Beitrag von Boccaccio » 30.09.2010 15:53:43

Danke, das funktioniert!

Antworten