gruplac-json
Convierte la página pública del GrupLAC de un grupo de investigación (Minciencias, Colombia) en un único documento JSON: datos básicos, instituciones (con su ROR), plan estratégico, líneas de investigación, integrantes con su COD_RH y su periodo de vinculación, producción bibliográfica en el esquema de obras de ImpactU, proyectos, eventos y todos los demás productos (other_products), con autores, título, lugar, fechas, identificadores, enlaces y los demás datos rotulados de cada ítem.
Es la pareja de cvlac-json: los productos que existen en ambos tienen la misma forma, y usa sus herramientas de ROR y de Scienti.
- Afiliaciones de los integrantes: cada autor de un producto que aparece en "Integrantes del grupo" recibe su COD_RH y, si el año del producto está en su periodo "Inicio - Fin Vinculación", el grupo como afiliación, con la procedencia (
gruplac.provenance: "gruplac members"), y las instituciones declaradas del grupo con su ROR ("gruplac institutions"), como hace cvlac-json con la experiencia. - Con una clave de apis.colav.co, agrega los identificadores Scienti (
COD_RH-COD_PRODUCTO,-COD_PROYECTO,-COD_EVENTO,-COD_RED) de los registros del grupo que coinciden. Los productos sin autores en la página (consultorías, conceptos técnicos, procesos de apropiación social…) reciben como autores a los integrantes que registraron ese producto en Scienti.
Instalación
pip install gruplac-json
Uso en la terminal
gruplac-json COL0008423 # escribe gruplac_COL0008423.json
gruplac-json 1676 # el número de GrupLAC, con o sin ceros a la izquierda
gruplac-json COL0008423 --save-html g.html # guarda también la página descargada
gruplac-json COL0008423 --html g.html.gz # analiza una página guardada (.html o .html.gz), sin descargar
gruplac-json COL0008423 -o - # JSON por la salida estándar
gruplac-json COL0008423 --scienti off --ror off
| Opción | Efecto |
|---|---|
--scienti auto (por defecto) |
Si hay clave de apis.colav.co, agrega los ids Scienti de los registros del grupo que coinciden. |
--scienti off |
No consulta Scienti. |
--institution, --model-year |
Volcado de Scienti (udea, univalle, uec, unaula) y año del modelo. Por defecto se prueban en ese orden. |
--apikey CLAVE |
Clave de apis.colav.co para esta ejecución. |
--ror auto / off |
Consulta o no el registro ROR (instituciones del grupo y de las tesis). |
El código COL se traduce al número de GrupLAC con la tabla de los 6.936 grupos de la búsqueda de grupos de Minciencias (31 de octubre de 2026), incluida en el paquete. Un grupo que no esté en la tabla se puede pedir por su número de GrupLAC; sin código COL no se consulta Scienti.
La clave de apis.colav.co se toma, en este orden, de --apikey, de la variable de entorno COLAV_APIKEY o del archivo ~/.config/colav/apikey. Nunca se imprime.
Uso como biblioteca
from gruplac_json import extract
data = extract("COL0008423", scienti="off") # descarga y analiza la página
print(data["name"], len(data["members"]), len(data["works"]))
from gruplac_json.parser import decode
html = decode(open("g.html", "rb").read())
data = extract("COL0008423", html=html, ror=False)
Identificador de producto (product_hash)
Cada integrante autor de una obra o de un producto de other_products lleva, en su entrada de authors[], un product_hash: el SHA-1 de título|COD_RH|tipo|año, con el título en minúsculas, sin tildes y solo con letras y dígitos, el COD_RH del integrante y el tipo work (obras) u other (demás productos). Es el mismo valor que cvlac-json pone en la entrada del dueño de cada producto de su CvLAC, así que une un producto del GrupLAC con el del CV de cada integrante que lo firmó, sin depender de mayúsculas, tildes, espacios ni puntuación. Un artículo de dos integrantes tiene dos product_hash, uno por integrante; los autores que no son integrantes tienen null. Es único por integrante: si dos de sus registros dan la misma clave, el segundo lleva |2 al final, el tercero |3…
from gruplac_json import product_hash
from gruplac_json.product_hash import hash_key
hash_key("Singlet Dirac dark matter streamlined", "0000707619", "work", 2024)
# 'singletdiracdarkmatterstreamlined|0000707619|work|2024'
product_hash("Singlet Dirac dark matter streamlined", "0000707619", "work", 2024)
# 'efc8d0bb2fa5…' (40 caracteres)
Cambia si cambia el título (más allá de esas diferencias), el año o el tipo. Reglas, ejemplos y cuánto coincide con los CvLAC: §13 del esquema.
Esquema del JSON
El esquema completo, campo por campo, está en docs/gruplac_json_esquema.md.
Desarrollo
git clone https://github.com/restrepo/gruplac-json.git
cd gruplac-json
python -m pip install -e ".[dev]"
python -m pytest
ruff check . && ruff format --check .
Las pruebas no usan la red: corren sobre una página sintética (tests/fixtures/gruplac_sintetico.html) con personas y productos ficticios y la misma estructura HTML del GrupLAC.
Cómo publicar una versión nueva en PyPI: PUBLISHING.md y CHANGELOG.md.
Avisos
- La página del GrupLAC es pública, pero contiene datos personales (nombres de los integrantes, correo del grupo). Úselos de acuerdo con la normativa de protección de datos que aplique.
- Sea moderado con el servidor de Minciencias: haga una pausa de uno o dos segundos entre grupos cuando procese muchos.
- Las afiliaciones de los productos son inferidas del periodo de vinculación (el autor era integrante del grupo ese año); el GrupLAC no las declara. Los coautores que no son integrantes no tienen afiliación.
Licencia
Metadata
Release files for gruplac-json 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gruplac_json-0.3.0.tar.gz | 87.5 kB | With provenance | Details for gruplac_json-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gruplac_json-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for gruplac_json-0.3.0-py3-none-any.whl |
Total release size: 158.4 kB
Release files / gruplac_json-0.3.0.tar.gz
| Download URL | gruplac_json-0.3.0.tar.gz |
|---|---|
| Size | 87.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e5d743caaaedf56a97fad13f4dc07ec1d815a9505330496f4de947b495f18904
|
|
BLAKE2b-256 checksum How to use checksums |
fb7be47dd8e8d9f686eda092b0207a5251210b9d5080e4a94ed168e79ef1ea43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logRelease files / gruplac_json-0.3.0-py3-none-any.whl
| Download URL | gruplac_json-0.3.0-py3-none-any.whl |
|---|---|
| Size | 70.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
81b3c41acd026278fb39e19ab7601c5fd97f6b8fbba90f0b7935b5964fb16727
|
|
BLAKE2b-256 checksum How to use checksums |
172df951e57ddb5d5651b278d67055847942735d29968d3682734fdeb0ffee42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logSecurity for gruplac-json 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for gruplac_json-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.