Apenas resultado de curvatura de saída dependente do tipo mime

0

É possível fazer o curl apenas salvar a saída de curl -o se o arquivo for de um certo tipo mime?

Por exemplo, eu posso usar o seguinte comando para baixar um monte de imagens de um servidor ...

curl -o file_#1.jpg http://wwww.mysite.com/images.php?id=[1-50]

Nesse site, ele pode retornar text / html se não houver uma imagem com esse ID. Existe alguma maneira de filtrar os resultados de curvatura para que apenas salve arquivos do tipo image / jpeg?

    
por Alex Coplan 19.11.2011 / 13:11

1 resposta

0

Aqui está uma maneira de fazer isso no bash:

declare -i i=1
while (( $i <= 50 ))
do
    filename="file_${i}.jpg"
    curl -o ${filename} http://wwww.mysite.com/images.php?id=${i}
    if ! file ${filename} | grep -qi image
    then
      rm -f ${filename}
    fi
    i=$(($i + 1))
done

Isso percorre todas as 50 imagens potenciais, faz o download de cada uma, verifica se realmente é uma imagem e exclui o arquivo baixado, se não for.

Se a sua plataforma tiver o comando seq , você poderá simplificar o loop dessa maneira:

for i in $(seq 50)
do
    filename="file_${i}.jpg"
    curl -o ${filename} http://wwww.mysite.com/images.php?id=${i}
    if ! file ${filename} | grep -qi image
    then
      rm -f ${filename}
    fi
done

Nas versões mais recentes do bash, você também pode usar o {n..m} construct:

for i in {1..50}
do
    ...
done
    
por 19.11.2011 / 14:45