</> Cómo funciona
URL del audio de pronunciación de cada acepción (fase 2: carga de los mp3 pendiente).
| parámetro | tipo | por defecto | qué hace |
|---|---|---|---|
palabra | string | — (obligatorio) | la palabra |
commons/diccionario.py — un solo módulo con la búsqueda base _mvs() y las funciones de cada endpoint (definición, ejemplo, relacionadas, colocaciones, traducción, audio, registros, refranes)._mvs() y encima aplican su especialidad. Por eso son una sola página.flowchart TD
MOD[("repositorio")]
_media_url["_media_url()"]
_mvs["_mvs()"]
audio["audio()"]
audio --> _media_url
audio --> _mvs
_media_url -. datos .-> MOD
_mvs -. datos .-> MOD
classDef red fill:#fde7f0,stroke:#c0397b,color:#7a1e4d;
class MOD red;# -*- coding: utf-8 -*-
"""diccionario.py — diccionario semántico: una red de asociación de palabras.
Toda consulta LEMATIZA primero la palabra y busca por el LEMA (no por la forma
concreta), sobre la unidad léxica y sus explicaciones. Se apoya en el Índice de
Contiguidad (palabras del mismo campo semántico están "cerca").
Un solo módulo da servicio a varios endpoints del diccionario: definición, ejemplo,
palabras relacionadas, colocaciones, traducción, audio, clasificación de una frase
y el cruce con los refranes. Todos comparten la misma búsqueda base por lema.
"""
import urllib.parse as _url
_IMG_BASE = "https://diccionario.wordkers.es/media/img/"
_AUDIO_BASE = "https://diccionario.wordkers.es/audio/"
# […consultas al repositorio del diccionario + tabla de idiomas (esquema interno)…]
def _media_url(base, fichero):
# arma la URL pública del recurso (imagen/audio); None si no hay fichero
return (base + _url.quote(fichero)) if fichero else None
def _mvs(cur, palabra):
"""Búsqueda BASE: filas unidad+explicación de la palabra (ya lematizada).
Todas las funciones de abajo parten de aquí."""
cur.execute(_SQL_MV, (palabra, palabra))
return cur.fetchall()
def audio(cur, palabra):
"""URL del audio de pronunciación de cada acepción (puede venir vacío)."""
rows = _mvs(cur, palabra)
out = []
for r in rows:
cur.execute(_SQL_AUDIO, (r[1],)) # r[1] = id de la unidad
a = cur.fetchone()
out.append({"lema": r[2], "audio": _media_url(_AUDIO_BASE, a[0]) if a else None})
return {"palabra": palabra, "encontrado": bool(rows), "resultados": out}
Llámala con el código a la vista.
curl "https://api.wordkers.com/v1/diccionario/audio?palabra=casa" \
-H "X-API-Key: TU_CLAVE"