Skip to content

CLI Reference

BCN Extractor incluye una CLI unificada en bcn_cli.py, organizada en grupos de comandos. Todos los subcomandos soportan --help.

Terminal window
python bcn_cli.py --help
python bcn_cli.py normas --help
python bcn_cli.py metadata --help
python bcn_cli.py instituciones --help
Terminal window
python bcn_cli.py --debug normas sync 17

Muestra los logs internos del cliente HTTP (requests, caché, reintentos). Sin el flag, solo se muestran warnings relevantes (como normas con ID inválido).


normas list — Listar normas de una institución

Section titled “normas list — Listar normas de una institución”
Terminal window
python bcn_cli.py normas list <id_institucion> [--limit N] [--verbose]

Lista las normas disponibles en la BCN para una institución específica. No descarga ni almacena nada, solo consulta el servicio web directamente.

ArgumentoTipoDescripción
id_institucionintID de la institución en la BCN
--limit, -nintMáximo de normas a mostrar
--output, -opathGuardar lista como JSON
--verbose, -vflagMostrar fecha de publicación
Terminal window
python bcn_cli.py normas list 17 --limit 20
python bcn_cli.py normas list 17 --output normas.json

normas get — Descargar una norma específica

Section titled “normas get — Descargar una norma específica”
Terminal window
python bcn_cli.py normas get <id> [--md PATH] [--xml PATH] [--full]

Descarga una norma específica desde la BCN.

ArgumentoTipoDescripción
idintID de la norma
--md, -mpathGuardar como Markdown en la ruta indicada
--xml, -xpathGuardar XML original en la ruta indicada
--full, -fflagDescargar texto completo (sin flag solo descarga metadatos)
Terminal window
python bcn_cli.py normas get 206396 --md salida.md
python bcn_cli.py normas get 206396 --full --xml backup.xml

normas sync — Sincronizar normas a la base de datos

Section titled “normas sync — Sincronizar normas a la base de datos”
Terminal window
python bcn_cli.py normas sync <id_institucion> [--limit N] [--force]

Descarga las normas de una institución y las sincroniza en PostgreSQL. Detecta cambios via hash MD5 para evitar upserts innecesarios. Cada vez que una norma cambia, la versión anterior queda archivada automáticamente en normas_versiones.

ArgumentoTipoDescripción
id_institucionintID de la institución
--limit, -nintMáximo de normas a procesar
--forceflagForzar re-descarga aunque no haya cambios
Terminal window
# Sincronizar las primeras 10 normas
python bcn_cli.py normas sync 17 --limit 10
# Forzar re-descarga completa
python bcn_cli.py normas sync 17 --force

Terminal window
python bcn_cli.py normas search "<query>" [--limit N]

Búsqueda full-text en español sobre los títulos y contenido de las normas almacenadas localmente.

ArgumentoTipoDescripción
querystrTexto a buscar
--limit, -nintMáximo de resultados (default: 20)
Terminal window
python bcn_cli.py normas search "medio ambiente"
python bcn_cli.py normas search "decreto supremo" --limit 5

normas metadata — Ver metadata de una norma

Section titled “normas metadata — Ver metadata de una norma”
Terminal window
python bcn_cli.py normas metadata <id>

Muestra la metadata estructurada de una norma específica: materias, organismos y flags como derogado o es_tratado. La metadata se almacena en la tabla EAV normas_metadata y se pobla automáticamente durante el sync.

ArgumentoTipoDescripción
idintID de la norma
Terminal window
python bcn_cli.py normas metadata 206396

normas by-metadata — Buscar normas por clave de metadata

Section titled “normas by-metadata — Buscar normas por clave de metadata”
Terminal window
python bcn_cli.py normas by-metadata <clave> <valor> [--limit N] [--offset N]

Filtra normas por una clave y valor de metadata. Usa los índices de normas_metadata para búsquedas eficientes.

ArgumentoTipoDescripción
clavestrClave de metadata (ej: materia, organismo)
valorstrValor a buscar (búsqueda parcial)
--limit, -nintMáximo de resultados (default: 20)
--offsetintDesplazamiento para paginación (default: 0)
Terminal window
python bcn_cli.py normas by-metadata materia "medio ambiente"
python bcn_cli.py normas by-metadata organismo "ministerio de salud" --limit 10
python bcn_cli.py normas by-metadata materia "transporte" --limit 20 --offset 20

metadata claves — Listar claves disponibles

Section titled “metadata claves — Listar claves disponibles”
Terminal window
python bcn_cli.py metadata claves

Lista todas las claves de metadata registradas en normas_metadata. Útil para saber qué valores puedes usar con normas by-metadata.

Terminal window
python bcn_cli.py metadata claves

metadata stats — Estadísticas de metadata

Section titled “metadata stats — Estadísticas de metadata”
Terminal window
python bcn_cli.py metadata stats

Muestra el total de entradas en normas_metadata, cuántas normas tienen metadata registrada, y el desglose por clave.

Terminal window
python bcn_cli.py metadata stats

instituciones — Gestión de instituciones

Section titled “instituciones — Gestión de instituciones”

instituciones list — Listar instituciones

Section titled “instituciones list — Listar instituciones”
Terminal window
python bcn_cli.py instituciones list [--search TEXTO] [--limit N]
ArgumentoTipoDescripción
--search, -sstrFiltrar por nombre
--limit, -nintMáximo de resultados
Terminal window
python bcn_cli.py instituciones list
python bcn_cli.py instituciones list --search "ministerio"

instituciones get — Ver detalle de una institución

Section titled “instituciones get — Ver detalle de una institución”
Terminal window
python bcn_cli.py instituciones get <id>
Terminal window
python bcn_cli.py instituciones get 1041

Terminal window
python bcn_cli.py instituciones load <archivo.csv> [--mode update|append|replace]

Carga un CSV con instituciones en la base de datos. El repositorio incluye data/instituciones.csv con las 700+ instituciones de la BCN.

ArgumentoTipoDescripción
csv_pathpathRuta al archivo CSV
--mode, -mstrModo de carga: update (default), append, replace
Terminal window
python bcn_cli.py instituciones load data/instituciones.csv
python bcn_cli.py instituciones load data/instituciones.csv --mode replace

Terminal window
python bcn_cli.py init [--csv PATH]

Inicializa el esquema de la base de datos (incluyendo las tablas normas_metadata y normas_versiones) y carga instituciones desde el CSV incluido.

Terminal window
python bcn_cli.py init
python bcn_cli.py init --csv data/instituciones.csv

Terminal window
python bcn_cli.py stats [--errors]

Muestra un resumen del estado de la base de datos: normas por tipo y estado, instituciones, operaciones recientes y versiones archivadas.

ArgumentoTipoDescripción
--errors, -eflagIncluir errores recientes en el output
Terminal window
python bcn_cli.py stats
python bcn_cli.py stats --errors

cache stats / cache clear — Gestionar caché

Section titled “cache stats / cache clear — Gestionar caché”
Terminal window
python bcn_cli.py cache stats
python bcn_cli.py cache clear [--force]
Terminal window
# Ver info del caché
python bcn_cli.py cache stats
# Limpiar (pide confirmación)
python bcn_cli.py cache clear
# Limpiar sin confirmación
python bcn_cli.py cache clear --force

Además de la CLI, puedes levantar la API REST:

Terminal window
uvicorn api:app --reload --port 8000

La documentación interactiva estará disponible en:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

Ver la referencia completa de la API para el detalle de los endpoints.