Files
brasiliano/tasks/TODO.md
T

53 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TODO — notas técnicas (Brasiliana → S3)
> Só o que está **aberto**. O que foi concluído, com os achados e o histórico
> das sessões, está em [`tasks/done/`](done/); a última versão completa deste
> arquivo, com os achados 2.15–2.28 e 3.1–3.5 citados abaixo, é
> [`done/TODO-2026-09-30.md`](done/TODO-2026-09-30.md). Plano, estado e
> descrição NOBRADE: [`PLANO.md`](PLANO.md). Scripts e estado em `pipeline/`.
## Pendente
Movido para [`tasks.md`](tasks.md), a lista única de tarefas abertas do projeto.
## Notas técnicas úteis pra retomar
- Downloads automáticos do Chrome exigem permissão manual em `chrome://settings/content/automaticDownloads` (site adicionado: `https://brasilianafotografica.bn.gov.br`) — já concedida, vale pra novos scripts também, não só o original.
- `BRAS`, `BAIXA`, `BAIXA_THUMB`, `BAIXA_EXTRA` — todos no `window` da mesma aba, mesmo IndexedDB (`bras`). Todos sobrevivem a fechar/reabrir a aba (dado fica salvo), mas o *loop* para e precisa recolar o script certo pra retomar.
- **Regerar as miniaturas derivadas** (tudo reconstruível, nada precisa ser
guardado): no finland, `apt install libvips-tools parallel` + s5cmd; pra cada
chave de `itens/*/preservacao/*`, `s5cmd cat` num tmp e
`vipsthumbnail "$TMP" --size 256 --output "$OUT[Q=80,strip]"`, com
`parallel -j 10`. ~640 thumbs/min, tráfego intra-Hetzner (bucket é `hel1`, o
finland também) — não passa pelo link de casa. O que ainda está só em
`~/Downloads` sai mais barato derivado localmente com `magick`: mandar os
71 GB pro finland custaria os mesmos dias do upload pendente.
- **Cuidado ao parsear `s5cmd ls`**: nomes de arquivo do acervo têm espaço
**duplo** (`48094 Álbum 311 - ...jpg`). `awk '{$1="";$2="";$3=""; print}'
recolapsa esses espaços e produz chaves que não existem — 31 downloads
falharam assim antes de eu perceber. Use
`sed -E 's|^[0-9/]+ +[0-9:]+ +[0-9]+ ||'`, que preserva o resto literal.
- **`sqlite3` desta máquina tem `.sqliterc` forçando modo box**: qualquer
script que leia a saída precisa de `sqlite3 -init /dev/null -noheader
-separator $'\t'`, senão vem borda de tabela no lugar dos dados (me custou
um diff inteiro de falso positivo).
- **`until ! pgrep -f X; do sleep; done` nunca termina**: a linha de comando do
próprio loop contém `X`, então o `pgrep -f` se acha e a condição nunca vira
falsa. Um loop desses ficou girando horas depois do trabalho acabar (12/09,
morto à mão). Esperar por PID (`while kill -0 $PID`) ou usar `pgrep -f
'[t]humb-local'` para o padrão não casar consigo mesmo.
- **Parar processo lançado em background: SIGTERM, não SIGINT.** Processo
iniciado com `&` num shell não interativo herda o SIGINT ignorado (o
`subidor.py` ficou 60 s vivo depois do `kill -INT`). Com SIGTERM, o `aws s3
cp` filho termina órfão, o que é inofensivo: sem linha no ledger e sem
apagar o local, o próximo uploader sobe de novo a mesma chave.
- **Upload de casa: 69 Mbps** (`networkQuality -s`, 12/09); download 312 Mbps.
- **Assinaturas aceitas como imagem** (`subidor-paralelo.py`): JPEG `FFD8`, PNG,
TIFF `II*\0`/`MM\0*`, GIF, JP2, BMP `BM`, WebP. Content-Type sai do conteúdo,
não da extensão (TIFF chega com nome `.jpg`).
- **`vipsthumbnail --output` é relativo à pasta do arquivo de entrada**, não ao
diretório corrente: `vipsthumbnail tmp/x.img --output out/y.webp` tenta
gravar em `tmp/out/y.webp` e falha. Usar caminho absoluto na saída. (Custou
uma miniatura "refeita" que não foi refeita, em 13/09.)
- Scripts-fonte em `pipeline/`: `coletor.js` / `coletor-resume.js` (metadados), `baixador-navegador.js` (preservação, todos os itens), `baixador-thumb.js` (miniaturas), `baixador-extras.js` (2a+ imagem de itens multi-bitstream), `reparo-multibitstream.js` (enumera bitstreams reais de um item).