Ich versuche, Bilder von einer Website herunterzuladen und habe Folgendes versucht:
curl -o img.jpg (URL)
wget (URL) -O img.jpg
wget --save-headers -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" (URL) -O img.jpg
In jedem Fall funktioniert der Befehl, wenn ich ihn normal im Terminal ausführe. Sobald ich jedoch versuche, ihn in ein Bash-Skript einzubinden, wird das Image beschädigt und es erscheint die folgende Meldung:
Error interpreting JPEG image file (Not a JPEG file: starts with 0x48 0x54).
Das Skript:
#!/bin/bash
#I pass the url as a parameter - http://img1.goodfon.su/wallpaper/original/f/c3/les-eli-lokomotiv-noch-sneg.jpg
#wget --save-headers -k -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" $1 -O img.jpg
#curl -o img.jpg $1
wget $1 -O img.jpg
avconv -framerate 25 -f image2 -i img.jpg -c:v h264 -crf 1 out.mov
Antwort1
Die beiden Hex-Zahlen in
Not a JPEG file: starts with 0x48 0x54
in ASCII übersetzen, HT
was, wie ich vermute, weiterhin funktioniert HTTP[...]
. Überprüfen Sie den Header der Datei mit xxd -l 20 img.jpg
. Dies ist die zu erwartende Ausgabe des letzten von Ihnen geposteten Befehls, da
wget --save-headers
weist an , der Ausgabe den Header der Antwort wget
voranzustellen .HTTP
Die beiden anderen Aufrufe tun dies nicht.
Ich habe gerade Ihr Skript getestet und es funktioniert entweder mit
curl
oder wget
. Zum wget
Herunterladen der Datei ist ein Benutzerstring -U
erforderlich, sonst lehnt der Server ab. Verwenden Sie entweder
curl -o img.jpg $1
oder
wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" $1 -O img.jpg
ohne --save-headers
.