Files
brasiliano/pipeline/nobrade/config.py
T
rodado fd37348811 feat: derivadas de acesso com tamanhos pela NARA e CONARQ (medio 1.200, grande 2.000)
- pipeline/deriva-acesso.py gera medio/ e grande/ da matriz no finland, em
  WebP sRGB, sem ampliar, com retomada
- MANIFEST e CONARQ.md documentam matriz, derivada de navegação e de acesso
  (Res. CONARQ 31/2010) e os tamanhos da NARA 2004
- INDEX.md revisto; teste-upload.txt e falhas-500 antigos saem do bucket
2026-10-01 09:48:55 +02:00

79 lines
4.0 KiB
Python

"""Constantes da descrição NOBRADE — decisões registradas em CONARQ.md §5."""
from pathlib import Path
RAIZ = Path(__file__).resolve().parents[2]
PIPELINE = RAIZ / 'pipeline'
CATALOGO = PIPELINE / 'catalogo.jsonl'
LEDGER = PIPELINE / 'subidor.sqlite'
POSTS = PIPELINE / 'wordpress-posts.jsonl'
ERROS = RAIZ / 'errors.md'
AJUSTES = Path(__file__).resolve().parent / 'ajustes'
SAIDA = RAIZ / 'descricao'
TEXTOS = SAIDA / 'textos'
REVISAO = SAIDA / 'revisao'
# 1.1 — código da entidade custodiadora. PROVISÓRIO até o CONARQ atribuir um
# (proc. 1.1.1). Trocar aqui regenera todos os códigos de referência.
# Formato do CODEARQ, como o AGCRJ usa: país, espaço, UF + sigla, e as partes
# da unidade separadas por ponto — BR RJAGCRJ.SOP.NL.AVE.03.01
PAIS = 'BR'
ENTIDADE = 'RJXYZ'
ENTIDADE_NOME = 'xyz — cópia digital de acervos fotográficos'
ENTIDADE_SITE = 'https://xn--2dk.xyz/brasiliana/'
COLECAO = 'BF'
COLECAO_TITULO = 'Coleção Brasiliana Fotográfica (cópia digital)'
RESPONSAVEL = 'rafapolo'
# Derivadas de acesso no bucket (CONARQ Res. 31/2010; tamanhos pela NARA 2004):
# thumb256/ 256 px (navegação) · medio/ 1.200 px (acesso) · grande/ 2.000 px
# (acesso ampliado). GRANDE liga a troca para grande/ no zoom do visor —
# só True depois que pipeline/deriva-acesso.py cobriu o acervo inteiro.
GRANDE = False
BUCKET = 's3://brasiliana'
REGRAS = ('NOBRADE: Norma brasileira de descrição arquivística (CONARQ, 2006); '
'ISAD(G) 2ª ed. (CIA, 2000); ISAAR(CPF) 2ª ed. (CIA, 2004); '
'datas em ISO 8601-2 (EDTF); idiomas em ISO 639-2; países em ISO 3166.')
ORIGEM_NOME = 'Brasiliana Fotográfica'
ORIGEM_SITE = 'https://brasilianafotografica.bn.gov.br/'
HANDLE_URL = 'https://brasilianafotografica.bn.gov.br/brasiliana/handle/{}'
# Nível 2 — uma seção por instituição de origem (campo `community` do catálogo).
# sigla → (nome autorizado, cidade)
INSTITUICOES = {
'Instituto Moreira Salles': ('IMS', 'Instituto Moreira Salles', 'Rio de Janeiro (RJ)'),
'Biblioteca Nacional': ('BN', 'Biblioteca Nacional (Brasil)', 'Rio de Janeiro (RJ)'),
'Museu Aeroespacial': ('MUSAL', 'Museu Aeroespacial', 'Rio de Janeiro (RJ)'),
'Museu da Republica': ('MR', 'Museu da República', 'Rio de Janeiro (RJ)'),
'Museu Historico Nacional': ('MHN', 'Museu Histórico Nacional', 'Rio de Janeiro (RJ)'),
'Fiocruz': ('COC', 'Fundação Oswaldo Cruz. Casa de Oswaldo Cruz', 'Rio de Janeiro (RJ)'),
'Diretoria do Patrimonio Historico e Documentacao da Marinha':
('DPHDM', 'Diretoria do Patrimônio Histórico e Documentação da Marinha', 'Rio de Janeiro (RJ)'),
'Arquivo Nacional': ('AN', 'Arquivo Nacional (Brasil)', 'Rio de Janeiro (RJ)'),
'Arquivo Geral da Cidade do Rio de Janeiro':
('AGCRJ', 'Arquivo Geral da Cidade do Rio de Janeiro', 'Rio de Janeiro (RJ)'),
'Leibniz-Institut fuer Laenderkunde, Leipzig':
('IFL', 'Leibniz-Institut für Länderkunde', 'Leipzig (Alemanha)'),
'Instituto Historico e Geografico Brasileiro':
('IHGB', 'Instituto Histórico e Geográfico Brasileiro', 'Rio de Janeiro (RJ)'),
'Fundacao Joaquim Nabuco': ('FUNDAJ', 'Fundação Joaquim Nabuco', 'Recife (PE)'),
'Museu Paraense Emilio Goeldi': ('MPEG', 'Museu Paraense Emílio Goeldi', 'Belém (PA)'),
'Escola de Ciencias Sociais (FGV CPDOC)':
('CPDOC', 'Fundação Getulio Vargas. Escola de Ciências Sociais (FGV CPDOC)', 'Rio de Janeiro (RJ)'),
'Instituto Brasileiro de Geografia e Estatistica':
('IBGE', 'Instituto Brasileiro de Geografia e Estatística', 'Rio de Janeiro (RJ)'),
}
# 4.1 — obrigatório nos níveis 0 e 1
ACESSO = ('Sem restrição de acesso à descrição. As cópias digitais são mantidas '
f'para preservação em {BUCKET} e consultáveis pelo mural em {ENTIDADE_SITE}. '
'O acesso aos originais segue as regras de cada instituição de origem '
'(ver 5.1 em cada dossiê).')
def codigo(*partes: str) -> str:
"""BR RJXYZ, BR RJXYZ.BF, BR RJXYZ.BF.IMS.GF.12345.01 …"""
return f'{PAIS} ' + '.'.join((ENTIDADE,) + tuple(p for p in partes if p))