Skip to content

feat: integración completa de Spotify como fuente primaria#33

Merged
Hitomatito merged 1 commit into
mainfrom
issue-14-spotify-support
Jun 13, 2026
Merged

feat: integración completa de Spotify como fuente primaria#33
Hitomatito merged 1 commit into
mainfrom
issue-14-spotify-support

Conversation

@Hitomatito

Copy link
Copy Markdown
Owner

Esta solicitud de extracción introduce la compatibilidad con Spotify mediante la integración del plugin LavaSrc en el servicio Lavalink y la actualización de los archivos de configuración, entorno y utilidades pertinentes. También incluye la limpieza y refactorización del código para el manejo de variables de entorno y funciones de utilidad.

Integración de Spotify/LavaSrc:

  • Se agregaron las credenciales del cliente de Spotify (SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET) a .env.example y .env.docker.example, y se pasaron a través de docker-compose.yml al servicio Lavalink. [1] [2] [3] [4]

  • Se actualizó lavalink/application.yml para habilitar y configurar el complemento LavaSrc para la compatibilidad con Spotify, incluyendo la configuración del proveedor y la fuente, y haciendo referencia a las nuevas variables de entorno.

  • Se modificó Dockerfile.lavalink para descargar el complemento LavaSrc, agregar un script de punto de entrada y asegurar que el complemento se cargue al iniciar el contenedor. [1] [2] [3] [4]

  • Se agregó registro de depuración para LavaSrc en la configuración de Lavalink.

Gestión y refactorización de variables de entorno:

  • Se refactorizó la lógica repetitiva de gestión de archivos de entorno (read_env_file, parse_env_lines, write_env_value) en un nuevo módulo de utilidades utils/env_utils.py, y se actualizaron bootstrap.py y run.py para que lo utilicen. [1] [2] [3] [4] [5]
  • Se actualizó config.py para leer las credenciales de Spotify del entorno.

Utilidades y limpieza de código:

  • Se agregaron funciones de utilidad para la detección y normalización de URL de Spotify en utils/search.py.

  • Se eliminaron funciones no utilizadas o redundantes de utils/search.py y se optimizó el código. [1] [2] [3] [4]

  • Limpieza menor en utils/embeds.py (eliminación de código no utilizado y simplificación de la creación de incrustaciones). [1] [2]

  • Se eliminó una variable de instancia no utilizada de main.py.

Esta solicitud de extracción añade compatibilidad con la integración de Spotify mediante la configuración del entorno, Docker y Lavalink para usar las credenciales de la API de Spotify y el complemento LavaSrc. También introduce varias mejoras en el código, incluyendo la refactorización de utilidades de variables de entorno y la eliminación de funciones no utilizadas.

Integración de Spotify y configuración de Lavalink:

  • Se añadieron SPOTIFY_CLIENT_ID y SPOTIFY_CLIENT_SECRET a .env.example y .env.docker.example, y se pasaron a través de docker-compose.yml tanto al servicio lavalink como al servicio principal del bot. [1] [2] [3] [4]

  • Se actualizó lavalink/application.yml para habilitar y configurar el complemento lavasrc para la compatibilidad con Spotify, incluyendo la configuración del proveedor y la fuente, y se configuraron las credenciales de Spotify para usar variables de entorno.

  • Se modificó Dockerfile.lavalink para instalar el complemento LavaSrc, agregar un script de punto de entrada y asegurar que las variables de entorno se sustituyan en la configuración de Lavalink al inicio. Se agregó lavalink/entrypoint.sh para gestionar esta sustitución. [1] [2] [3] [4]

  • Establece las credenciales de Spotify como variables de entorno opcionales en config.py.

Refactorización de utilidades de variables de entorno:

  • Se trasladaron las funciones read_env_file, parse_env_lines y write_env_value a un nuevo módulo utils/env_utils.py y se actualizaron las importaciones en bootstrap.py y run.py. Se eliminaron las implementaciones duplicadas de dichos archivos. [1] [2] [3] [4] [5]

Mejoras en Lavalink y el registro de eventos:

  • Se agregó registro de depuración para el complemento LavaSrc en lavalink/application.yml.

  • Se agregó gettext-base a la imagen Docker de Lavalink para la sustitución de variables de entorno.

Utilidades de búsqueda de YouTube y Spotify:

  • Se agregaron las funciones is_spotify_url y _normalize_spotify_url a utils/search.py para reconocer y normalizar las URL de Spotify.

  • Se eliminaron las funciones internas de puntuación y coincidencia óptima de búsqueda de YouTube que no se utilizaban y eran redundantes, simplificando así el código. [1] [2] [3] [4]

Limpieza menor del código:

  • Se eliminaron importaciones y funciones no utilizadas en utils/embeds.py y main.py para mayor claridad y facilidad de mantenimiento. [1] [2] [3]

Estos cambios, en conjunto, permiten la compatibilidad con pistas de Spotify a través de Lavalink y LavaSrc, mejorar la gestión de la configuración y limpiar el código fuente para facilitar su mantenimiento.

- Búsqueda y autocomplete solo Spotify (sin YouTube)
- Resolución de álbumes y tracks vía Client Credentials
- Autoplay inteligente: mismo artista + covers de distintos artistas
- nowplaying enriquecido: álbum, fecha, popularidad, géneros, explícito
- Cache en memoria para resultados Lavalink de Spotify
- Reintento automático en fallos de Lavalink con URLs Spotify
- Eliminadas funciones muertas: search_youtube_best_match, build_status_embed
- Refactor: utils/spotify_resolver, utils/env_utils
- Autocomplete con cache local para respuestas instantáneas
Copilot AI review requested due to automatic review settings June 13, 2026 07:48
@Hitomatito Hitomatito merged commit ac80ba4 into main Jun 13, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Esta PR integra Spotify como fuente primaria de reproducción añadiendo soporte de LavaSrc en Lavalink (configuración + Docker) y actualizando el bot para reconocer/buscar URLs y resultados de Spotify. Además, centraliza utilidades de manejo de .env y simplifica algunas utilidades de embeds/búsqueda.

Changes:

  • Integración de LavaSrc/Spotify en Lavalink (plugin, configuración, entrypoint con envsubst) y paso de credenciales vía docker-compose.
  • Nuevas utilidades y lógica en el bot para búsqueda/autocomplete, reproducción y autoplay con Spotify (incluye resolver y metadata).
  • Refactor de utilidades de variables de entorno hacia utils/env_utils.py y limpieza menor en utilidades.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
utils/spotify_resolver.py Nuevo módulo para token OAuth y resolución/búsqueda/recomendaciones de Spotify.
utils/search.py Añade detección/normalización de URLs de Spotify y limpia helpers no usados de YouTube.
cogs/music.py Integra Spotify en autocomplete/búsqueda/playback, autoplay con recomendaciones y cachés.
config.py Lee credenciales de Spotify desde variables de entorno.
docker-compose.yml Pasa SPOTIFY_CLIENT_ID/SECRET a Lavalink y al bot.
lavalink/application.yml Habilita y configura LavaSrc con Spotify como fuente.
Dockerfile.lavalink Descarga el plugin LavaSrc, añade gettext-base y configura entrypoint.
lavalink/entrypoint.sh Sustituye variables de entorno en application.yml antes de arrancar Lavalink.
utils/env_utils.py Nuevo módulo compartido para leer/parsear/escribir .env.
run.py Reutiliza utils.env_utils y elimina duplicación de helpers .env.
bootstrap.py Reutiliza utils.env_utils y elimina duplicación de helpers .env.
utils/embeds.py Simplifica build_base_embed y elimina código no usado.
main.py Elimina un atributo de instancia no usado.
.env.example Añade variables de entorno de Spotify.
.env.docker.example Añade variables de entorno de Spotify para Docker.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread cogs/music.py
Comment thread cogs/music.py
Comment thread cogs/music.py
Comment thread utils/search.py
Comment thread utils/search.py
Comment thread utils/spotify_resolver.py
Comment thread cogs/music.py
Comment thread utils/spotify_resolver.py
Comment thread cogs/music.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants