wget e cURL não funcionam com o script bash

1

Estou tentando baixar uma imagem de um site e tentei:

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

Em todos os casos, o comando funciona quando eu executo normalmente o terminal. No entanto, assim que eu tentar incorporá-lo com algum script bash, a imagem se corrompe com a seguinte mensagem:

Error interpreting JPEG image file (Not a JPEG file: starts with 0x48 0x54).

Eu nunca encontrei nenhum erro como este antes, o script pode ser encontrado abaixo.

#!/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"  -O img.jpg
#curl -o img.jpg 
wget  -O img.jpg

avconv -framerate 25 -f image2 -i img.jpg -c:v h264 -crf 1 out.mov
    
por Blunderchips 23.10.2015 / 07:11

1 resposta

1

Os dois números hexadecimais em

Not a JPEG file: starts with 0x48 0x54

traduza para ASCII HT , o que eu acho que continua a HTTP[...] . Verifique o cabeçalho do arquivo com xxd -l 20 img.jpg . Isto é para ser esperado saída do último comando que você postou, desde

wget --save-headers

instrui wget a preceder a saída com o cabeçalho HTTP da resposta.

As outras duas invocações não farão isso.

Acabei de testar seu script e ele funciona com curl ou wget . Para wget fazer o download do arquivo, uma seqüência de caracteres do usuário -U é necessária, caso contrário, o servidor recusará. Pode usar
curl -o img.jpg 

ou

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"  -O img.jpg

sem --save-headers .

    
por Nephente 23.10.2015 / 07:38