Terceira rodada contra a origem recuperou 6 imagens de preservação (6433, 6520, 6656, 7529, 7939, 8396). Os 69 restantes estão classificados pelo que a origem faz: 500 na sequência da preservação, travamento cortado em ~300 s ou ~30 s, ou falha de rede. A forma canônica por nome também devolve 500, e Range não ajuda porque o servidor não envia nem os cabeçalhos. Contagens atualizadas no README, MANIFEST e TODO: 12.991 itens com preservação e 41.450 objetos no ledger.
27 lines
1.5 KiB
Bash
Executable File
27 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Baixa por curl, em serie e com timeout longo, os itens de errors.md.
|
|
# Descoberta de 13/09: a origem serve esses bitstreams a ~11 KB/s; o que
|
|
# parecia "erro de rede" no navegador era estouro de tempo. Alguns voltam 403
|
|
# (bloqueio Cloudflare a cliente sem sessao) -- esses ficam para a aba.
|
|
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36"
|
|
B=https://brasilianafotografica.bn.gov.br/brasiliana/bitstream/20.500.12156.1
|
|
ok=0; b403=0; b500=0; outro=0
|
|
while IFS='|' read -r id seq arq; do
|
|
[ -z "$id" ] && continue
|
|
nome="BRAS__20.500.12156.1_${id}__$(python3 -c "import urllib.parse,sys;print(urllib.parse.unquote(sys.argv[1]))" "$arq")"
|
|
[ -f "$HOME/Downloads/$nome" ] && continue
|
|
code=$(curl -sL --max-time 600 -o "$HOME/Downloads/.parcial" -w "%{http_code}" \
|
|
-H "User-Agent: $UA" -H "Accept: image/*,*/*;q=0.8" \
|
|
-H "Referer: https://brasilianafotografica.bn.gov.br/" --compressed "$B/$id/$seq/$arq")
|
|
sz=$(stat -f %z "$HOME/Downloads/.parcial" 2>/dev/null || echo 0)
|
|
if [ "$code" = "200" ] && [ "$sz" -gt 1024 ]; then
|
|
mv "$HOME/Downloads/.parcial" "$HOME/Downloads/$nome"; ok=$((ok+1)); echo "ok $id $((sz/1024)) KB"
|
|
else
|
|
rm -f "$HOME/Downloads/.parcial"
|
|
case "$code" in 403) b403=$((b403+1));; 500) b500=$((b500+1));; *) outro=$((outro+1));; esac
|
|
echo "erro $id http=$code ${sz}B"
|
|
fi
|
|
sleep 2
|
|
done < faltantes-v3.compacto.curl
|
|
echo "FIM: ok=$ok 403=$b403 500=$b500 outros=$outro"
|