Files
brasiliano/MANIFEST.md
T
rodado 10b7cb0cb9 docs: cópia legada mudou para o endereço https do objdigital
O objdigital fechou a porta 80 e passou a servir em
https://objdigital.bn.br/objdigital2/acervo_digital/. Três cópias legadas do
bucket baixadas pelo endereço novo voltaram com sha256 idêntico.

Dos 565 legados marcados como 404 permanente, 348 existem no endereço novo
(330 JPEG, 18 PDF), 41 são páginas de visualizador Deep Zoom e 176 seguem
404. Lista em pipeline/legado-caminho-novo.tsv.

MANIFEST corrigido: 2.112 cópias legadas são imagem; as outras 25 no bucket
são páginas HTML do visualizador.
2026-09-14 09:59:40 +02:00

166 lines
8.3 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.
# MANIFEST — Brasiliana Fotográfica → S3
> **Rascunho, gerado em 2026-09-10.** Os pipelines de download ainda estavam
> em andamento quando este arquivo foi escrito pela última vez — os números
> marcados como "em andamento" precisam de uma passada final antes de
> publicar. Ver `tasks/PLANO.md` pro detalhe técnico completo.
## O que é
Cópia de preservação do acervo da **Brasiliana Fotográfica**
(brasilianafotografica.bn.gov.br), um repositório DSpace mantido pela
Biblioteca Nacional do Brasil reunindo fotografias de 15 instituições
brasileiras e uma alemã (handles `20.500.12156.1/*`). Depositada em
`s3://brasiliana` como acervo arquivístico — procedência e checksums
preservados por item, não uma cópia solta de imagens.
Inclui também os posts editoriais do blog WordPress do mesmo projeto
(raiz do domínio, separado do repositório DSpace) — ensaios curatoriais
que contextualizam itens do acervo, com autoria e data preservadas.
## Por que foi coletado assim
A Biblioteca Nacional foi consultada: o material é público, mas a
instituição não tem equipe técnica para fornecer um dump. A coleta por
scraping foi o caminho combinado, com ritmo cortês e identificação do
coletor mantidos ao longo de toda a coleta.
## Como foi coletado
**Metadados** (13.058 itens reais — ver nota sobre falso-positivo abaixo):
enumerados via `browse?type=title` por comunidade (o sitemap oficial está
desatualizado desde 2019 e cobre só 41% do acervo), colhidos um a um do
DSpace (`?show=full`), executado a partir de um navegador real — o site
usa uma proteção anti-automação que bloqueia requisições de servidores e
navegadores sem sessão real, mesmo pra bitstreams de imagem, não só
páginas HTML.
**Imagens**: cada item pode ter mais de uma imagem original (achado desta
coleta — 115 itens tinham 2 a 6 bitstreams reais, não um). Pra cada item
coletamos: a imagem de preservação (a de maior resolução), a(s) imagem(ns)
adicional(is) quando existem, e a miniatura gerada pelo próprio DSpace.
Uma cópia legada de menor resolução (`objdigital.bn.br`) também foi
preservada quando disponível — é a mesma proveniência, resolução inferior,
mantida por referência histórica, nunca como substituta da imagem de
preservação.
**Posts do blog**: 637 posts únicos identificados (8 categorias do
WordPress, com sobreposição substancial entre elas), com título, autor,
data, categorias e corpo do texto, mais a lista de handles do acervo que
cada post referencia.
## Estrutura no bucket
```
s3://brasiliana/
MANIFEST.md este arquivo
catalogo.jsonl metadados completos, 1 linha por item
wordpress-posts.jsonl posts do blog, 1 linha por post
itens/{handle-com-underscore}/
metadata.json Dublin Core completo + URL de origem
+ data/hora UTC de captura
manifest-sha256.txt SHA-256 de cada arquivo do item
preservacao/
{nome-do-arquivo}.jpg imagem de maior resolução
extra_seqN.jpg imagens adicionais (itens com
múltiplos bitstreams — ver achado
2.7 do PLANO.md)
thumbnail/
thumb_N.jpg miniatura gerada pelo DSpace
legado/
{nome-original}.jpg cópia de objdigital.bn.br, quando
existe (menor resolução, mesma
proveniência)
derivados/thumb256/
{handle-com-underscore}.webp miniatura DERIVADA por nós (não é
material de origem — ver abaixo)
```
### Sobre `derivados/`
Tudo sob `itens/` é material de origem: veio da Biblioteca Nacional como
está. `derivados/` é o oposto — foi gerado por nós a partir do que está
em `itens/`, e pode ser reconstruído do zero a qualquer momento. A
separação é proposital: misturar derivado nosso com bitstream de origem
apagaria a procedência que o resto deste manifesto garante.
`derivados/thumb256/` tem **13.059 miniaturas** (256px no maior lado,
WebP q80, ~100 MB no total), uma por item, geradas com libvips a partir da
imagem de preservação quando ela existe e, nos 69 itens sem ela, do
`thumbnail/` do próprio DSpace. A especificação de saída é a mesma nos dois casos,
então o conjunto é uniforme.
Cobre **13.059 dos 13.060 handles do catálogo (99,99%)**. O único ausente
é `7523`, cujos bitstreams a origem serve com HTTP 500.
Nota sobre a contagem de itens: este manifesto fala em 13.058 itens reais,
mas o `catalogo.jsonl` tem 13.060 handles distintos. A diferença de 2 não
foi reconciliada — vale conferir antes de tratar qualquer um dos dois
números como definitivo.
Note que `itens/{handle}/thumbnail/` **não** é uma miniatura no sentido
usual: os arquivos que o DSpace chama de thumbnail têm 721 a 3.709 px no
maior lado (média ~1.087). São derivados de resolução média, não
miniaturas de listagem.
## Não-negociáveis (cumpridos)
- **SHA-256 de cada arquivo** — em `manifest-sha256.txt`, por item
- **URL de origem + data/hora UTC de captura** — em `metadata.json`
(`source_url`, `fetched_at`)
- **`dc.rights` e instituição de origem preservados por item** —
`metadata.json` traz `community` (100% dos itens) e `rights` (quando a
instituição de origem o preencheu — ver nota abaixo)
## Contagens (⚠️ conferir antes de publicar — pipelines em andamento)
| | Total esperado | Status |
|---|--:|---|
| Itens no catálogo | 13.058 | ✅ fechado |
| Imagem de preservação | **12.991** | ✅ fechado |
| Miniatura (thumbnail do DSpace) | **13.059** | ✅ fechado |
| Miniatura derivada (`derivados/thumb256/`) | **13.059** | ✅ fechado |
| Imagens extras (multi-bitstream) | 245 | ✅ completo |
| Cópia legada (objdigital) | **2.112** imagens (1.899 JPG + 213 PDF) de 2.702 elegíveis; 565 × HTTP 404; 25 são páginas HTML de visualizador, não imagem | ✅ fechado |
| Posts do blog | 637 | 🟡 em andamento |
**Antes de publicar**: rodar a verificação final (contagem de pastas no
bucket vs. catálogo, checksums batendo) e atualizar esta tabela com os
números fechados.
## Exceções conhecidas (não são bugs)
- **`dc.rights` ausente em 5.833 itens (44,7%)** — característica real da
fonte: várias instituições nunca preencheram esse campo no DSpace. A
instituição de origem (`community`) está preservada em 100% dos casos;
a decisão de redistribuição desses itens deve considerar a política de
cada instituição individualmente (ver seção "Direitos" abaixo).
- **Handle `20.500.12156.1/1`** — descoberto pelo crawler mas não é um
item: é a página raiz da comunidade. Excluído do catálogo final.
- **Duplicatas com sufixo `(N)` removidas** — 3.511 objetos nomeados
`arquivo (1).jpg` ao lado de um `arquivo.jpg` byte a byte idêntico
(artefato do navegador rebaixando por cima). Confirmados idênticos por
ETag + tamanho antes de apagar; 0,39 GB recuperados. Sobraram 43 cujo
nome tem o sufixo mas que são o único arquivo do item (ficam como
estão) e 30 cujo gêmeo tem tamanho diferente — esses precisam de
conferência individual e **não** foram tocados.
- **Handle `20.500.12156.1/7523`** ("Vista Aérea de Cabo Frio", Museu
Aeroespacial) — sem imagem. O servidor da Biblioteca Nacional retorna
`HTTP 500` ao tentar servir os bitstreams desse item especificamente;
não é um problema do nosso lado. Metadados preservados normalmente.
- **Handles `20.500.12156.1/6656` e `20.500.12156.1/7939`** — o que foi
baixado como imagem de preservação é, na verdade, o bitstream de
LICENÇA do DSpace (777 bytes de texto UTF-8 com extensão `.jpg`). É a
mesma contaminação do achado 2.8b, desta vez na trilha de preservação e
não na de miniatura. A validação de magic bytes do `subidor.py` barra
esses arquivos no upload, então eles nunca chegaram ao bucket — mas
significa que esses dois itens ainda não têm imagem coletada.
## Direitos
Majoritariamente domínio público por antiguidade, mas as 16 instituições
de origem (15 brasileiras + 1 alemã) têm políticas distintas. `dc.rights`
e a instituição de origem são preservados **por item**: a decisão de
redistribuir é item a item, não do acervo em bloco. Arquivar para si é
uma coisa; republicar é outra.