Automatizando la Búsqueda de IDs de Anime con PHP y APIs

Resolviendo el Problema de los IDs

Dado un listado de nombres de series de anime, surge la necesidad de encontrar el ID asignado por MyAnimeList (MAL). La pregunta inicial es si es posible hacerlo mediante scraping o mediante una aproximación inteligente. Tras analizar las opciones, se concluye que utilizar la API oficial de MAL es mucho más fiable y eficiente que intentar extraer datos directamente del sitio web.

Diagrama técnico mostrando la normalización de títulos y la búsqueda de IDs en una API
Flujo de trabajo del script PHP para buscar IDs en MAL

Adaptabilidad: De Python a PHP 7

Inicialmente se sugiere un enfoque en Python para manejar la lógica de búsqueda. Sin embargo, al observar las herramientas disponibles localmente, el proyecto evoluciona hacia un script en PHP 7. Esto demuestra una flexibilidad clave en el desarrollo de software: adaptar la solución técnica a los recursos del entorno sin sacrificar la funcionalidad.

Arquitectura y Normalización

El diseño final se estructura como una herramienta profesional, no un script simple. Se define una arquitectura clara con archivos modulares como buscar_mal.php, config.php y aliases.json. Un aspecto crucial es la normalización de los títulos: el sistema elimina extensiones de archivo (como .mkv), expande abreviaturas estacionales (S2 a Season 2) y maneja variantes en español.

Estrategias de Similitud y Caché

Para asegurar la precisión, el sistema combina funciones nativas como similar_text() con algoritmos de distancia de edición. Además, se implementa una caché automática para almacenar resultados previos en un archivo JSON, permitiendo que las llamadas a la API sean mínimas y eficientes.

Hacia un Resolvedor Universal

El proyecto no termina siendo solo un buscador de IDs. Se diseña desde el principio con la capacidad de ser universal: mediante parámetros simples, el mismo script puede generar salidas para AniList, AniDB e IMDb. Esta visión a futuro transforma una tarea de mantenimiento en una utilidad escalable y robusta.