Files
brasiliano/pipeline/baixa-curl-lentos.sh
rodado aeb8b3b179 docs: errors.md com 69 itens e comportamento de cada falha
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.
2026-09-13 21:59:58 +02:00

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"