CLI Reference
BCN Extractor incluye una CLI unificada en bcn_cli.py, organizada en grupos de comandos. Todos los subcomandos soportan --help.
python bcn_cli.py --helppython bcn_cli.py normas --helppython bcn_cli.py metadata --helppython bcn_cli.py instituciones --helpFlag global
Section titled “Flag global”--debug — Activar logs internos
Section titled “--debug — Activar logs internos”python bcn_cli.py --debug normas sync 17Muestra los logs internos del cliente HTTP (requests, caché, reintentos). Sin el flag, solo se muestran warnings relevantes (como normas con ID inválido).
normas — Gestión de normas
Section titled “normas — Gestión de normas”normas list — Listar normas de una institución
Section titled “normas list — Listar normas de una institución”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.
| Argumento | Tipo | Descripción |
|---|---|---|
id_institucion | int | ID de la institución en la BCN |
--limit, -n | int | Máximo de normas a mostrar |
--output, -o | path | Guardar lista como JSON |
--verbose, -v | flag | Mostrar fecha de publicación |
python bcn_cli.py normas list 17 --limit 20python bcn_cli.py normas list 17 --output normas.jsonnormas get — Descargar una norma específica
Section titled “normas get — Descargar una norma específica”python bcn_cli.py normas get <id> [--md PATH] [--xml PATH] [--full]Descarga una norma específica desde la BCN.
| Argumento | Tipo | Descripción |
|---|---|---|
id | int | ID de la norma |
--md, -m | path | Guardar como Markdown en la ruta indicada |
--xml, -x | path | Guardar XML original en la ruta indicada |
--full, -f | flag | Descargar texto completo (sin flag solo descarga metadatos) |
python bcn_cli.py normas get 206396 --md salida.mdpython bcn_cli.py normas get 206396 --full --xml backup.xmlnormas sync — Sincronizar normas a la base de datos
Section titled “normas sync — Sincronizar normas a la base de datos”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.
| Argumento | Tipo | Descripción |
|---|---|---|
id_institucion | int | ID de la institución |
--limit, -n | int | Máximo de normas a procesar |
--force | flag | Forzar re-descarga aunque no haya cambios |
# Sincronizar las primeras 10 normaspython bcn_cli.py normas sync 17 --limit 10
# Forzar re-descarga completapython bcn_cli.py normas sync 17 --forcenormas search — Buscar normas por texto
Section titled “normas search — Buscar normas por texto”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.
| Argumento | Tipo | Descripción |
|---|---|---|
query | str | Texto a buscar |
--limit, -n | int | Máximo de resultados (default: 20) |
python bcn_cli.py normas search "medio ambiente"python bcn_cli.py normas search "decreto supremo" --limit 5normas metadata — Ver metadata de una norma
Section titled “normas metadata — Ver metadata de una norma”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.
| Argumento | Tipo | Descripción |
|---|---|---|
id | int | ID de la norma |
python bcn_cli.py normas metadata 206396normas by-metadata — Buscar normas por clave de metadata
Section titled “normas by-metadata — Buscar normas por clave de metadata”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.
| Argumento | Tipo | Descripción |
|---|---|---|
clave | str | Clave de metadata (ej: materia, organismo) |
valor | str | Valor a buscar (búsqueda parcial) |
--limit, -n | int | Máximo de resultados (default: 20) |
--offset | int | Desplazamiento para paginación (default: 0) |
python bcn_cli.py normas by-metadata materia "medio ambiente"python bcn_cli.py normas by-metadata organismo "ministerio de salud" --limit 10python bcn_cli.py normas by-metadata materia "transporte" --limit 20 --offset 20metadata — Gestión de metadata
Section titled “metadata — Gestión de metadata”metadata claves — Listar claves disponibles
Section titled “metadata claves — Listar claves disponibles”python bcn_cli.py metadata clavesLista todas las claves de metadata registradas en normas_metadata. Útil para saber qué valores puedes usar con normas by-metadata.
python bcn_cli.py metadata clavesmetadata stats — Estadísticas de metadata
Section titled “metadata stats — Estadísticas de metadata”python bcn_cli.py metadata statsMuestra el total de entradas en normas_metadata, cuántas normas tienen metadata registrada, y el desglose por clave.
python bcn_cli.py metadata statsinstituciones — Gestión de instituciones
Section titled “instituciones — Gestión de instituciones”instituciones list — Listar instituciones
Section titled “instituciones list — Listar instituciones”python bcn_cli.py instituciones list [--search TEXTO] [--limit N]| Argumento | Tipo | Descripción |
|---|---|---|
--search, -s | str | Filtrar por nombre |
--limit, -n | int | Máximo de resultados |
python bcn_cli.py instituciones listpython 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”python bcn_cli.py instituciones get <id>python bcn_cli.py instituciones get 1041instituciones load — Cargar desde CSV
Section titled “instituciones load — Cargar desde CSV”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.
| Argumento | Tipo | Descripción |
|---|---|---|
csv_path | path | Ruta al archivo CSV |
--mode, -m | str | Modo de carga: update (default), append, replace |
python bcn_cli.py instituciones load data/instituciones.csvpython bcn_cli.py instituciones load data/instituciones.csv --mode replaceComandos de sistema
Section titled “Comandos de sistema”init — Inicializar la base de datos
Section titled “init — Inicializar la base de datos”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.
python bcn_cli.py initpython bcn_cli.py init --csv data/instituciones.csvstats — Estadísticas del sistema
Section titled “stats — Estadísticas del sistema”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.
| Argumento | Tipo | Descripción |
|---|---|---|
--errors, -e | flag | Incluir errores recientes en el output |
python bcn_cli.py statspython bcn_cli.py stats --errorscache stats / cache clear — Gestionar caché
Section titled “cache stats / cache clear — Gestionar caché”python bcn_cli.py cache statspython bcn_cli.py cache clear [--force]# Ver info del cachépython bcn_cli.py cache stats
# Limpiar (pide confirmación)python bcn_cli.py cache clear
# Limpiar sin confirmaciónpython bcn_cli.py cache clear --forceREST API
Section titled “REST API”Además de la CLI, puedes levantar la API REST:
uvicorn api:app --reload --port 8000La 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.