feat: acervo Brasiliana Fotográfica coletado e mural 3D no ar
Captura integral do acervo da Brasiliana Fotográfica (Biblioteca Nacional) para s3://brasiliana: 13.060 itens, 12.985 com imagem de preservação, 13.059 com miniatura derivada, 2.137 cópias legadas e 636 posts do blog. 41.444 objetos no ledger. Os 75 itens sem preservação estão em errors.md: a página do item responde 200, mas a origem serve o bitstream com HTTP 500. Nenhum fica fora do mural, porque todos têm thumbnail. Não versionado, por viver no bucket ou ser reconstruível: catálogo, posts .jsonl, atlas .webp, sqlite de estado e logs. Credenciais ficam de fora pelo .gitignore.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
> **Arquivado em 2026-09-10 — superado.** Prompt de handoff original da Fase
|
||||
> 1. Cumpriu seu papel (a Fase 1 terminou, catálogo saiu). Boa parte do
|
||||
> conteúdo abaixo (trilha A via servidor, "não mexa na aba do Brave") não
|
||||
> vale mais — ver `tasks/PLANO.md` pro estado e runbook atuais. Mantido só
|
||||
> como registro histórico.
|
||||
|
||||
Retomando o projeto Brasiliana → S3. Leia primeiro `tasks/PLANO.md` (estado, achados, runbook) e depois `README.md` se precisar de mais detalhe técnico.
|
||||
|
||||
> Nota (2026-09-10): reorganização de pastas — `baixador.py`, `subidor.py`, `coletor.js`, `baixador-navegador.js`, `catalogo.jsonl` e `.s3env` agora moram em `pipeline/`. Os comandos deste arquivo ainda usam os nomes antigos sem prefixo; rode-os de dentro de `pipeline/` (`cd pipeline` primeiro) ou ajuste os caminhos. `tasks/PLANO.md` já está com os caminhos corrigidos — prefira aquele runbook.
|
||||
|
||||
Contexto rápido: a Fase 1 (coletor.js, metadados) está rodando numa aba do Chrome controlada por outra sessão de Claude (Cowork, na nuvem) — não mexa nela, ela é independente. Ela vai exportar `brasiliana-catalogo.jsonl` para `~/Downloads` sozinha quando terminar (ETA ~15-16h a partir de ~10:31 de 2026-09-09, checar se já não terminou antes de você ler isso).
|
||||
|
||||
Seu trabalho é tocar as Fases 2-4 assim que o catálogo existir — você tem rede real (SSH, S3), a sessão na nuvem não tem.
|
||||
|
||||
1. Verifique se `~/Downloads/brasiliana-catalogo.jsonl` (ou algo com esse padrão de nome) já existe. Se não, esse é o bloqueador: espere ou me avise para eu checar o progresso da fase 1.
|
||||
2. Fase 2 (trilha A, servidor Finlândia):
|
||||
```bash
|
||||
scp baixador.py catalogo.jsonl finland:/root/brasiliana/
|
||||
ssh finland
|
||||
set -a; . /root/.s3env; set +a
|
||||
cd /root/brasiliana
|
||||
python3 baixador.py --catalogo catalogo.jsonl --pular-legado
|
||||
python3 baixador.py --status
|
||||
```
|
||||
As credenciais reais (AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY) para preencher `.s3env` estão em `/Users/polux/Projetos/tocador/.env`. Na Finlândia já deve haver `/root/.s3env` configurado — confirme antes de reescrever.
|
||||
3. Fase 3 (trilha B, nomes com encoding — precisa do navegador):
|
||||
- Cole `baixador-navegador.js` no console da MESMA aba do coletor (a aba já tem o catálogo em memória/IndexedDB da fase 1). `BAIXA.quantos()` para saber quantos, `BAIXA.iniciar()` para começar — os arquivos caem em `~/Downloads`.
|
||||
- Em paralelo, no terminal local:
|
||||
```bash
|
||||
set -a; . .s3env; set +a
|
||||
python3 subidor.py --vigiar --catalogo catalogo.jsonl
|
||||
```
|
||||
4. Fase 4 (cópias legadas do objdigital, só alcançável localmente):
|
||||
```bash
|
||||
set -a; . .s3env; set +a
|
||||
python3 baixador.py --catalogo catalogo.jsonl --somente-legado
|
||||
```
|
||||
5. Ao final: gere `MANIFEST.md` (o que é, como foi coletado, quando) e confirme no bucket que a contagem de itens/checksums bate com os 13.036 esperados (ou o número real que saiu da fase 1, que pode ser ligeiramente diferente).
|
||||
|
||||
Regras não-negociáveis (do PLANO.md): SHA-256 de cada arquivo, e URL de origem + data/hora UTC de captura em cada `metadata.json`. `dc.rights` e a instituição de origem são preservados por item.
|
||||
|
||||
Se algo travar (disco cheio — aborta abaixo de 2GB livres na Finlândia —, erro de rede, item corrompido), pare, registre o que aconteceu em `tasks/PLANO.md` e me avise em vez de insistir.
|
||||
@@ -0,0 +1,15 @@
|
||||
# TODO concluído — 2026-09-10
|
||||
|
||||
Itens já fechados, tirados do `tasks/TODO.md` ativo pra não poluir. Ver
|
||||
`tasks/PLANO.md` pros achados permanentes (Cloudflare bloqueando bitstream,
|
||||
multi-bitstream, padrão de sequência de thumbnail etc.) — isso aqui é só o
|
||||
histórico de execução.
|
||||
|
||||
- [x] **Re-exportar `brasiliana-catalogo.jsonl`** — feito às 10:46, 13.058 itens, 119 com `all_preservation_urls` confirmados no arquivo.
|
||||
- [x] Reiniciar `subidor.py` com o catálogo atualizado (PID 3171) — confirmado processando.
|
||||
- [x] **Fase 4 (legado objdigital)**: não era bloqueio Cloudflare — o domínio só responde em HTTPS (HTTP puro tem a porta resetada). Corrigido em `baixador.py` (força https no `legacy_url`). Rodando local (PID 14570, sem navegador, curl direto funciona) — 2.707 itens com `legacy_url`.
|
||||
- [x] **34 itens que falharam no reparo multi-bitstream**: 33/34 corrigidos com reparo v3 (nome real do arquivo via `<img src>` da miniatura, tira o `.jpg` duplicado, busca por `/bitstream/handle/PREFIX/h/{nome real}` — necessário porque esses itens não tinham `<a href sequence=>` no wrapper e a sequência não era contígua a partir de 1). Extras disparados (`BAIXA_EXTRA`, 63 imagens novas). Catálogo re-exportado (152 itens com `all_preservation_urls` confirmados) e `subidor.py` reiniciado.
|
||||
- **1 exceção sem conserto**: handle `20.500.12156.1/7523` ("Vista Aérea de Cabo Frio") — `HTTP 500` do próprio servidor da BN ao buscar os bitstreams, não é problema de nome/padrão. Provável arquivo corrompido/quebrado do lado deles. Documentado no MANIFEST final como exceção conhecida.
|
||||
- **Total: 152/154 itens sem imagem original corrigidos** (152 + o falso-positivo `.../1` + o `7523` = 154).
|
||||
- [x] **Reorganização de pastas** (feita por outra sessão em paralelo): scripts/estado → `pipeline/`, visualizações → `web/`, `exemplo-item/` → `examples/`, `censo.py` → `archive/`. `subidor.py` morreu no meio da troca (não estava com FD aberto que sobrevivesse ao rename como o `baixador.py` teve) — reiniciado do novo caminho (PID 28923), backlog de ~2.963 arquivos em `~/Downloads` escoou normalmente depois.
|
||||
- [x] **Atualizar `PLANO.md`** com os achados desta sessão (2.6-2.9): Cloudflare bloqueia bitstream via curl também, estratégia virou "tudo via navegador", multi-bitstream (115 itens), padrão de sequência do thumbnail, objdigital só em HTTPS.
|
||||
Reference in New Issue
Block a user