CLI para consultar versículos bíblicos desde JSON y APIs
Project description
📖 Biblia CLI
Una herramienta de línea de comandos rápida y basada en Python para buscar y recuperar versículos bíblicos desde archivos JSON locales y APIs externas.
¿Qué hace la CLI?
Biblia CLI permite consultar versículos bíblicos de manera eficiente. Soporta búsqueda por referencia (como "Exodo 33:7"), rangos de versículos, búsqueda de texto completo y puede obtener datos desde fuentes locales (archivos JSON) o APIs remotas (como YouVersion).
Características principales:
- Búsqueda por referencia: Encuentra versículos específicos o rangos.
- Búsqueda de texto: Busca palabras o frases en toda la Biblia usando un índice invertido.
- Fuentes múltiples: Soporte para datos locales y APIs externas.
- Interfaz rica: Salida formateada con números de versículo en superíndice.
- Configurable: Selecciona versiones bíblicas y proveedores.
Instalación
Requisitos previos
- Python 3.12+
- uv (gestor de paquetes Python)
Pasos de instalación
- Clona el repositorio:
git clone https://github.com/yourusername/biblia-cli.git
cd biblia-cli
- Crea y activa un entorno virtual:
uv venv
# En Windows:
.venv\Scripts\activate
# En Unix/Linux/macOS:
source .venv/bin/activate
- Instala las dependencias:
uv sync
- Construye e instala el paquete (opcional para desarrollo):
uv build
uv run pip install --force-reinstall dist/*.whl
Configuración de .env
Para usar la API de YouVersion, necesitas configurar una clave de API:
- Copia el archivo de ejemplo:
cp .env_example .env
- Edita
.envy agrega tu clave de API de YouVersion:
YVP_APP_KEY="tu_clave_de_api_aqui"
Nota: La clave de API es necesaria solo si planeas usar fuentes remotas. Para uso local, no es requerida.
Comandos principales
Listar versiones disponibles
biblia versions
Lista todas las versiones bíblicas disponibles en español.
Seleccionar versión activa
biblia use RV1960
Configura la versión bíblica activa para consultas con API.
Buscar por referencia
biblia ref "Exodo 33:7"
Busca un versículo específico.
Buscar rangos de versículos
biblia ref "Exodo 33:7,10"
Busca un rango de versículos consecutivos.
Búsqueda de texto
biblia buscar "amor"
Busca una palabra o frase en toda la Biblia.
Limitar resultados de búsqueda
biblia buscar "amor" --limit 5
Limita el número de resultados mostrados.
Mostrar texto completo en búsquedas
biblia buscar "amor" --show
Muestra el texto completo de los versículos en los resultados.
Mostrar versión
biblia --version
Muestra la versión del CLI.
Ejemplo con fuente local
Para usar datos locales (archivos JSON), especifica --source local:
biblia ref "Exodo 33:7" --source local
Esto buscará en los archivos JSON locales en el directorio data/.
Ejemplo con API
Para usar una API externa (requiere configuración previa):
- Selecciona una versión:
biblia use RV1960
- Busca con fuente API:
biblia ref "Exodo 33:7" --source api
O usa auto para que el CLI elija automáticamente (local si disponible, API si no):
biblia ref "Exodo 33:7" --source auto
Estructura del proyecto
biblia-cli/
├─ biblia/ # Paquete principal
│ ├─ cli.py # Interfaz de línea de comandos
│ ├─ bible.py # Lógica de búsqueda de versículos
│ ├─ search.py # Búsqueda de texto
│ ├─ indexer.py # Constructor de índice invertido
│ ├─ refs.py # Analizador de referencias
│ ├─ loader.py # Cargador de datos JSON
│ ├─ resolver.py # Resolución de fuentes
│ ├─ config.py # Configuración de API
│ ├─ config_store.py # Almacenamiento de configuración
│ ├─ models.py # Modelos de datos
│ ├─ utils.py # Utilidades
│ └─ providers/ # Proveedores de datos
│ └─ youversion.py # Cliente de YouVersion API
├─ data/ # Datos bíblicos (archivos JSON)
│ ├─ exodo.json # Libro de Éxodo
│ └─ index.json # Índice invertido
├─ tests/ # Pruebas
├─ pyproject.toml # Configuración del proyecto
├─ .env_example # Ejemplo de configuración
└─ README.md # Este archivo
Cómo funciona
- Almacenamiento de datos: El contenido bíblico se almacena en formato JSON, un archivo por libro.
- Indexación: Un índice invertido mapea palabras a versículos para búsquedas rápidas.
- Análisis: Un analizador personalizado maneja nombres de libros con espacios (ej. "1 Corintios").
- Formateo: Los números de versículo se muestran en superíndice para mejor legibilidad.
- Proveedores: Soporte para múltiples fuentes de datos (local y APIs).
Agregar más libros
- Crea un nuevo archivo JSON en
data/siguiendo este formato:
{
"libro": "Nombre del Libro",
"capitulos": [
{
"capitulo": 1,
"versiculos": [
{"versiculo": 1, "texto": "Texto del versículo 1"},
{"versiculo": 2, "texto": "Texto del versículo 2"}
]
}
]
}
- Actualiza el índice ejecutando el indexador.
Contribuir
¡Las contribuciones son bienvenidas! Por favor, abre un issue o envía un pull request.
Licencia
Este proyecto está bajo la Licencia MIT. "abreviaturas": ["Abr"], "capitulos": { "1": { "1": "Verse text here...", "2": "Another verse..." } } }
2. Rebuild the index to include the new book:
```bash
python -m biblia.indexer
Development
Install development dependencies:
uv add --dev pytest
Run tests:
uv run pytest
Future Improvements
- Full chapter lookup
- Abbreviation support (e.g.,
Jn 3:16) - REST API
- Rich terminal output formatting
- PyPI publication
License
MIT
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file biblia_cli_project-0.1.0.tar.gz.
File metadata
- Download URL: biblia_cli_project-0.1.0.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d238028be77680c5d3d8d1b40ea76ff177c2d3f19109d7c3a2cd473f84c912c
|
|
| MD5 |
107ecee3f31eb65741e76763876481ad
|
|
| BLAKE2b-256 |
c8289a05bc89b864ff5145c3bdaf413d2037b45aed27da3a60ea79ce55bef7f0
|
File details
Details for the file biblia_cli_project-0.1.0-py3-none-any.whl.
File metadata
- Download URL: biblia_cli_project-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5a3b19b33e47046183133726c7b8416c6ce60e8192ede3a15ecc79982277165
|
|
| MD5 |
f6198a945c9ded553292ae2ec18b08e5
|
|
| BLAKE2b-256 |
2e6167e5d27419761095f5b0002dee1c9a54033b04228a071fd726541b812e31
|