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.
166 lines
8.3 KiB
Markdown
166 lines
8.3 KiB
Markdown
# 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.
|