awk -F, '{printf("%d%.5d%.4d %s\n",$1,$2,$3,$4)}' input.csv | while read newfile filename
do
wget -O "${newfile}.jpg" http://example.com/assets/?mediafile=${filename}
done
Eu tenho um CSV com 4 campos (id1, id2, id3, filename) assim:
2,2314,78,/image/1289.jpg
1,19825,179,/image/01288.jpg
2,2585,2281,/image/01287.jpg
3,35879,82,/image/01286.jpg
Existe um endpoint de URL comum para as imagens como
http://example.com/assets/?mediafile=
A última coluna é a parte exclusiva do URL da imagem.
Estou tentando fazer o download de cada imagem e o nome de cada imagem é baseado nos três primeiros campos:
id1 é sempre 1 dígito
id2 é realmente 5 dígitos com zeros prepending (assim 2314 precisa se tornar 02314)
id3 é realmente 4 dígitos (78 se torna 0078),
então, no total, um código de 10 dígitos. Portanto, o primeiro nome da imagem deve ser 2023140078.jpg
Se eu baixasse um único arquivo manualmente, faria algo assim:
wget -O 2023140078.jpg http://example.com/assets/?mediafile=/image/1289.jpg
Além disso, se eu pudesse escrever algum tipo de status ou código de erro para a linha ou escrever um log de erro, seria ótimo.
Você pode definir o IFS
para uma vírgula e usar um loop while
para ler as 4 variáveis que usam o arquivo como entrada:
IFS=','
while read c1 c2 c3 c4; do
wget -O "$(printf "%d%05d%04d.jpg" "$c1" "$c2" "$c3")" "http://example.com/assets/?mediafile=${c4}"
done < file.txt