{"id":45677895,"url":"https://github.com/mralexsaavedra/spotdl-bot","last_synced_at":"2026-02-24T13:08:20.422Z","repository":{"id":302423505,"uuid":"1012307159","full_name":"mralexsaavedra/spotdl-bot","owner":"mralexsaavedra","description":"Bot de Telegram para descargar canciones, álbumes y playlists de Spotify de forma sencilla y organizada, directamente a tu servidor o PC.","archived":false,"fork":false,"pushed_at":"2025-10-01T06:38:24.000Z","size":284,"stargazers_count":9,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-01T08:38:57.323Z","etag":null,"topics":["docker","docker-compose","python","spotdl","spotify","spotipy","telegram-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mralexsaavedra.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-02T06:19:55.000Z","updated_at":"2025-10-01T06:38:20.000Z","dependencies_parsed_at":"2025-07-16T19:12:41.201Z","dependency_job_id":"24181159-95b6-43a8-9502-a44cea9687ce","html_url":"https://github.com/mralexsaavedra/spotdl-bot","commit_stats":null,"previous_names":["mralexsaavedra/spotdl-bot"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/mralexsaavedra/spotdl-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mralexsaavedra%2Fspotdl-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mralexsaavedra%2Fspotdl-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mralexsaavedra%2Fspotdl-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mralexsaavedra%2Fspotdl-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mralexsaavedra","download_url":"https://codeload.github.com/mralexsaavedra/spotdl-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mralexsaavedra%2Fspotdl-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29783615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","python","spotdl","spotify","spotipy","telegram-bot"],"created_at":"2026-02-24T13:08:18.913Z","updated_at":"2026-02-24T13:08:20.416Z","avatar_url":"https://github.com/mralexsaavedra.png","language":"Python","funding_links":["https://www.buymeacoffee.com/mralexsaavedra"],"categories":[],"sub_categories":[],"readme":"# 🎵 SpotDL Bot\n\n[![GitHub](https://badgen.net/badge/icon/github?icon=github\u0026label)](https://github.com/mralexsaavedra/spotdl-bot)\n[![Docker](https://badgen.net/badge/icon/docker?icon=docker\u0026label)](https://hub.docker.com/r/mralexandersaavedra/spotdl-bot)\n![GitHub stars](https://badgen.net/github/stars/mralexsaavedra/spotdl-bot)\n![GitHub forks](https://badgen.net/github/forks/mralexsaavedra/spotdl-bot)\n![GitHub last-commit](https://badgen.net/github/last-commit/mralexsaavedra/spotdl-bot)\n![License](https://badgen.net/github/license/mralexsaavedra/spotdl-bot)\n[![Version](https://img.shields.io/github/v/release/mralexsaavedra/spotdl-bot)](https://github.com/mralexsaavedra/spotdl-bot/releases)\n[![Donar](https://img.shields.io/badge/Donar-Coffee%20%F0%9F%92%B0-orange)](https://www.buymeacoffee.com/mralexsaavedra)\n[![Web personal](https://img.shields.io/badge/Web-mralexsaavedra.com-blue)](https://mralexsaavedra.com)\n\nBot de Telegram que permite descargar canciones, álbumes y playlists completas de Spotify de forma rápida y sencilla, utilizando la potencia de [spotDL](https://github.com/spotDL/spotify-downloader).\n\n---\n\n## 📑 Tabla de Contenidos\n\n- [🎵 SpotDL Bot](#-spotdl-bot)\n  - [📑 Tabla de Contenidos](#-tabla-de-contenidos)\n  - [🚀 Funcionalidades](#-funcionalidades)\n  - [📋 Requisitos](#-requisitos)\n  - [🔑 Variables de entorno](#-variables-de-entorno)\n    - [🤖 Cómo crear un bot de Telegram y obtener su token](#-cómo-crear-un-bot-de-telegram-y-obtener-su-token)\n    - [📌 ¿Cómo obtener el Chat ID de Telegram?](#-cómo-obtener-el-chat-id-de-telegram)\n    - [🎵 Credenciales de Spotify (Client ID y Client Secret)](#-credenciales-de-spotify-client-id-y-client-secret)\n      - [Cómo obtener las credenciales de Spotify:](#cómo-obtener-las-credenciales-de-spotify)\n  - [📋 Comandos disponibles](#-comandos-disponibles)\n  - [🛠️ Instalación](#️-instalación)\n    - [🐳 Instalación con Docker](#-instalación-con-docker)\n      - [▶️ Opción 1: Usar docker run](#️-opción-1-usar-docker-run)\n      - [⚙️ Opción 2: Usar docker-compose](#️-opción-2-usar-docker-compose)\n    - [🖥️ Instalación local (sin Docker)](#️-instalación-local-sin-docker)\n  - [🛠️ Funcionamiento interno: SpotifyDownloader](#️-funcionamiento-interno-spotifydownloader)\n  - [🤝 Contribuciones y soporte](#-contribuciones-y-soporte)\n  - [❓ Preguntas frecuentes (FAQ)](#-preguntas-frecuentes-faq)\n  - [📝 Licencia](#-licencia)\n  - [🙌 Créditos](#-créditos)\n\n---\n\n## 🚀 Funcionalidades\n\n- 🔑 **Autorización segura**: Autoriza el acceso del bot a tu cuenta de Spotify.\n- 🎶 **Descarga avanzada**: Descarga canciones, álbumes, playlists y artistas completos de Spotify.\n- 🗂️ **Organización automática**: Estructura las descargas en carpetas por artista, álbum y playlist.\n- 🖼️ **Portadas automáticas**: Descarga y guarda las portadas de artistas y playlists.\n- 📄 **Listas M3U para playlists**: Genera archivos M3U compatibles con Jellyfin, Navidrome y otros servidores.\n- 🔄 **Sincronización inteligente**: Mantén tu biblioteca local siempre actualizada y limpia con el sistema de sincronización.\n- 🌍 **Multi-idioma**: Interfaz y menús disponibles en varios idiomas.\n- 🐳 **Compatible con Docker**: Fácil despliegue y actualización con Docker o Docker Compose.\n- 🤖 **Control total por Telegram**: Gestiona todas las descargas y sincronizaciones desde tu móvil o PC.\n- 📝 **Logs detallados**: Consulta los registros de actividad y errores en la carpeta `logs/`.\n- 🔒 **Privacidad**: Todo el procesamiento y almacenamiento es local, sin servicios de terceros.\n\n---\n\n## 📋 Requisitos\n\n- Python 3.10+\n- [Un bot de Telegram y su token de acceso](#-cómo-crear-un-bot-de-telegram-y-obtener-su-token)\n- [Chat ID de Telegram para el administrador del bot](#-cómo-obtener-el-chat-id-de-telegram)\n- [Credenciales de Spotify (Client ID y Secret)](#-credenciales-de-spotify-client-id-y-client-secret)\n- [URI de redirección para Spotify (Spotify Redirect URI)](#spotify-redirect-uri)\n\n\u003e **Importante:** Para que el bot funcione correctamente y pueda descargar tu música, debes vincular tu cuenta de Spotify siguiendo las instrucciones de la sección [¿Cómo vinculo mi cuenta de Spotify con el bot?](#cómo-vinculo-mi-cuenta-de-spotify-con-el-bot).\n\n\u003e **Importante:** El contenedor crea automáticamente un volumen para la configuración de SpotDL. En este volumen puedes encontrar el archivo `config.json` generado por la herramienta [SpotDL](https://spotdl.readthedocs.io/en/latest/usage/#default-config).  \n\n\u003e **Tip:** Si en el archivo `config.json` de SpotDL la propiedad `lyrics_providers` se establece como un array vacío (`[]`), no se obtendrán las letras de las canciones y las descargas serán más rápidas.\n\n---\n\n## 🔑 Variables de entorno\n\n| VARIABLE                | OBLIGATORIO  | DESCRIPCIÓN                                                                |\n| ----------------------- | ------------ | ---------------------------------------------------------------------------|\n| TELEGRAM\\_TOKEN         | ✅           | Token del bot de Telegram                                                  |\n| TELEGRAM\\_ADMIN         | ✅           | Chat ID del administrador (puede ser múltiple, separado por comas)         |\n| SPOTIFY\\_CLIENT\\_ID     | ✅           | Client ID de la aplicación Spotify                                         |\n| SPOTIFY\\_CLIENT\\_SECRET | ✅           | Client Secret de la aplicación Spotify                                     |\n| SPOTIFY\\_REDIRECT\\_URI  | ✅           | URI de redirección configurada en la app de Spotify                        |\n| PUID                    | ❌           | UID del usuario para los permisos del contenedor Docker (opcional)         |\n| PGID                    | ❌           | GID del grupo para los permisos del contenedor Docker (opcional)           |\n| TZ                      | ❌           | Zona horaria (ejemplo: Europe/Madrid)                                      |\n| LANGUAGE                | ❌           | Idioma para el bot (por ejemplo: ES, EN). Por defecto ES                   |\n\n---\n\n### 🤖 Cómo crear un bot de Telegram y obtener su token\n\nSigue esta [guía oficial de Telegram](https://core.telegram.org/bots#6-botfather) para crear un bot y obtener el token.\n\n---\n\n### 📌 ¿Cómo obtener el Chat ID de Telegram?\n\nEl **Chat ID** es un identificador numérico único para tu usuario o grupo en Telegram, necesario para que el bot sepa a quién enviar mensajes o aceptar comandos.\n\nPara obtener tu Chat ID personal, puedes hablar con el bot [@MissRose_bot](https://t.me/MissRose_bot) y escribir el comando `/id`.  \nEl bot te responderá con tu Chat ID, que deberás usar como valor para la variable `TELEGRAM_ADMIN`.\n\nPara más información sobre bots y tokens, consulta la documentación oficial: [https://core.telegram.org/bots#6-botfather](https://core.telegram.org/bots#6-botfather)\n\n---\n\n### 🎵 Credenciales de Spotify (Client ID y Client Secret)\n\nPara que el bot pueda acceder a la API de Spotify y descargar canciones, álbumes o playlists, necesitas crear una aplicación en el **Dashboard de Desarrolladores de Spotify** y obtener dos credenciales:\n\n- **Client ID**: Identificador público de tu aplicación.  \n- **Client Secret**: Clave privada que permite autenticar tu aplicación.\n\nEstas credenciales permiten al bot autenticar solicitudes y acceder a los datos de Spotify mediante OAuth.\n\n#### Cómo obtener las credenciales de Spotify:\n\n1. Accede al [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/applications).  \n2. Inicia sesión con tu cuenta de Spotify.  \n3. Crea una nueva aplicación haciendo clic en **\"Create an App\"**.  \n4. Dale un nombre y una descripción a tu aplicación.  \n\u003ca id=\"spotify-redirect-uri\"\u003e\u003c/a\u003e\n5. En la configuración de la aplicación, añade en **Redirect URIs** la URL que usarás para la autenticación, por ejemplo, http://127.0.0.1:9900/.\n6. Guarda los cambios.  \n7. Copia el **Client ID** y el **Client Secret** para usarlos en las variables de entorno.\n\n---\n\n## 📋 Comandos disponibles\n\n| Comando                         | Descripción                                                                                          |\n|---------------------------------|------------------------------------------------------------------------------------------------------|\n| `/start`                        | Mostrar menú inicial                                                                                 |\n| `/download`                     | Descargar canción/álbum/playlist                                                                     |\n| `/sync`                         | Sincronizar tu biblioteca                                                                            |\n| `/version`                      | Mostrar versión del bot                                                                              |\n| `/donate`                       | Información para donar                                                                               |\n\n\n---\n\n## 🛠️ Instalación\n\nPuedes instalar y ejecutar el bot de dos formas: usando Docker (recomendado para la mayoría de usuarios) o de forma local en tu sistema.\n\n### 🐳 Instalación con Docker\n\nPuedes ejecutar el bot fácilmente usando Docker o Docker Compose.\n\n#### ▶️ Opción 1: Usar docker run\n\n```bash\ndocker run -d --name spotdl-bot \\\n  -e TELEGRAM_TOKEN=\"tu_token\" \\\n  -e TELEGRAM_ADMIN=\"tu_chat_id\" \\\n  -e SPOTIFY_CLIENT_ID=\"tu_client_id\" \\\n  -e SPOTIFY_CLIENT_SECRET=\"tu_client_secret\" \\\n  -e SPOTIFY_REDIRECT_URI=\"tu_redirect_uri\" \\\n  -e PGID=1000 \\\n  -e LANGUAGE=\"es\" \\\n  -e PUID=1000 \\\n  -e TZ=Europe/Madrid \\\n  -v $(pwd)/music:/music \\\n  -v $(pwd)/cache:/app/cache \\\n  -v $(pwd)/logs:/app/logs \\\n  -v $(pwd)/config:/root/.spotdl \\\n  mralexandersaavedra/spotdl-bot\n```\n\n\u003e **Nota:** Asegúrate de crear los directorios `music`, `cache` y `logs` en tu máquina antes de ejecutar el comando, o Docker los creará vacíos.\n\n#### ⚙️ Opción 2: Usar docker-compose\n\n1. Asegúrate de tener Docker y Docker Compose instalados.\n2. Crea un archivo `.env` con las credenciales necesarias (puedes usar `.env.example` como plantilla).\n3. Crea el archivo `docker-compose.yml`:\n\n```yaml\nservices:\n  spotdl-bot:\n    image: mralexandersaavedra/spotdl-bot:latest\n    container_name: spotdl-bot\n    environment:\n      - TELEGRAM_TOKEN=${TELEGRAM_TOKEN}\n      - TELEGRAM_ADMIN=${TELEGRAM_ADMIN}\n      - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}\n      - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}\n      - SPOTIFY_REDIRECT_URI=${SPOTIFY_REDIRECT_URI}\n      - PUID=1000\n      - PGID=1000\n      - TZ=Europe/Madrid\n      - LANGUAGE=ES # IDIOMAS DISPONIBLES: ES, EN\n    volumes:\n      - ./music:/music # CAMBIA ESTA RUTA A TU DIRECTORIO DE MÚSICA\n      - ./cache:/app/cache # CAMBIA ESTA RUTA AL DIRECTORIO QUE QUIERAS PARA LA CACHE\n      - ./logs:/app/logs # CAMBIA ESTA RUTA AL DIRECTORIO QUE QUIERAS PARA LOS LOGS\n      - ./config:/root/.spotdl # CAMBIA ESTA RUTA AL DIRECTORIO QUE QUIERAS PARA LA CONFIGURACIÓN\n    restart: unless-stopped\n```\n\nPuedes encontrar este archivo y personalizarlo en el repositorio: [`docker-compose.yml`](./docker-compose.yml)\n\n4. Levanta el contenedor:\n\n```bash\ndocker compose up -d\n```\n\n\u003e **Consejo:** Puedes personalizar los volúmenes y la configuración en el archivo `.env` y `docker-compose.yml` según tus necesidades.\n\n### 🖥️ Instalación local (sin Docker)\n\n1. Clona el repositorio:\n   ```bash\n   git clone https://github.com/mralexsaavedra/spotdl-bot.git\n   cd spotdl-bot\n   ```\n2. (Opcional) Crea y activa un entorno virtual:\n   ```bash\n   python3 -m venv venv\n   source venv/bin/activate\n   ```\n3. Instala las dependencias:\n   ```bash\n   pip install -r requirements.txt\n   ```\n4. Crea los directorios necesarios:\n   ```bash\n   mkdir -p music cache logs\n   ```\n5. Configura las variables de entorno (puedes copiar `.env.example` a `.env` y editarlo):\n   ```bash\n   cp .env.example .env\n   # Edita el archivo .env con tus credenciales\n   ```\n6. Ejecuta el bot:\n   ```bash\n   python main.py\n   ```\n\n\u003e **Nota:** Para actualizar el bot, ejecuta `git pull` y vuelve a instalar dependencias si es necesario.\n\n---\n\n## 🛠️ Funcionamiento interno: SpotifyDownloader\n\nLa clase `SpotifyDownloader` es el núcleo del bot y se encarga de gestionar todas las operaciones relacionadas con la descarga y sincronización de contenido de Spotify. Sus principales responsabilidades son:\n\n- **Descarga de contenido**: Permite descargar canciones, álbumes, playlists y artistas usando SpotDL, gestionando los patrones de salida y la estructura de carpetas.\n  \u003e La estructura de carpetas es automática: las playlists se guardan en `Playlists/{nombre_playlist}/`, y los álbumes y canciones sueltas en `{nombre_artista}/{nombre_album}/`. Así, tu música queda organizada y lista para usar en cualquier reproductor o servidor de música.\n- **Sincronización**: Mantiene un archivo de sincronización para que puedas actualizar tu biblioteca local según los cambios en tus playlists, álbumes o canciones guardadas.\n  \u003e El archivo de sincronización se guarda en `cache/sync.spotdl` y almacena el estado de tus descargas para facilitar futuras actualizaciones o limpiezas automáticas. Si en el futuro quieres eliminar una sincronización, solo tienes que borrar la query correspondiente de este fichero.\n- **Manejo de imágenes**: Descarga y guarda automáticamente las portadas de artistas y playlists en sus carpetas correspondientes.\n- **Generación de archivos M3U**: Crea listas de reproducción M3U8 agrupando las canciones por playlist.\n  \u003e Los archivos M3U se generan únicamente para las playlists y permiten que servicios externos como Jellyfin o Navidrome reconozcan automáticamente las listas de reproducción descargadas.\n- **Gestión de errores y logs**: Implementa un sistema robusto de logging y manejo de errores para operaciones de archivos, red y API.\n  \u003e Los logs de actividad y errores se guardan en la carpeta `logs/` del proyecto para su consulta y diagnóstico.\n- **Internacionalización (i18n)**: Todos los mensajes y menús del bot están preparados para varios idiomas.\n- **Integración con Telegram**: Todos los métodos están diseñados para interactuar con el bot de Telegram, enviando mensajes de estado y errores al usuario.\n\nLa clase está pensada para ser robusta, fácil de mantener y extensible. Puedes consultar el código fuente en [`spotifyDownloader/__init__.py`](./spotifyDownloader/__init__.py) para más detalles sobre cada método y su funcionamiento.\n\n---\n\n## 🤝 Contribuciones y soporte\n\n¿Tienes dudas, sugerencias, encontraste un error o quieres mejorar el proyecto?\n\n- Abre un [issue en GitHub](https://github.com/mralexsaavedra/spotdl-bot/issues) para soporte, reportar bugs o proponer mejoras.\n- También puedes contribuir con un pull request si deseas añadir nuevas funcionalidades o corregir errores.\n\n¡Las contribuciones y el feedback son bienvenidos!\n\n---\n\n## ❓ Preguntas frecuentes (FAQ)\n\n**¿Por qué recibo errores de autenticación de Spotify?**\n- Verifica que tus credenciales (Client ID, Client Secret y Redirect URI) sean correctas y estén bien configuradas en las variables de entorno.\n- Asegúrate de que la URI de redirección en Spotify Developer Dashboard coincida exactamente con la que usas en el bot.\n\n\u003ca id=\"cómo-vinculo-mi-cuenta-de-spotify-con-el-bot\"\u003e\u003c/a\u003e\n**¿Cómo vinculo mi cuenta de Spotify con el bot?**\n- Es necesario autorizar al bot para que pueda acceder a tu cuenta de Spotify y descargar tu música.\n- Para iniciar el proceso de autorización, ejecuta el siguiente comando en tu terminal:\n  ```bash\n  docker exec -it spotdl-bot python -m core.auth\n  ```\n- Sigue las instrucciones que aparecerán para completar el proceso de vinculación.\n- Una vez autorizado, podrás usar todos los comandos de descarga y sincronización.\n\n**¿El bot no descarga nada o no responde?**\n- Revisa los logs en la carpeta `logs/` para ver si hay errores específicos.\n- Comprueba que tu token de Telegram y el chat ID sean correctos.\n\n**¿Por qué aparecen errores de permisos al guardar archivos?**\n- Asegúrate de que los directorios `music`, `cache` y `logs` existen y tienen permisos de escritura para el usuario que ejecuta el bot o el contenedor Docker.\n- Si usas Docker, revisa las variables PUID y PGID.\n\n**Consejo:** Si sigues muchas playlists, álbumes o artistas, o tienes muchas playlists guardadas, y ejecutas comandos que intentan descargar todo de una vez (como `downloadsavedalbums`, `downloadsavedplaylists`, `downloaduserplaylists` o `downloaduserfollowedartists`), es posible que encuentres límites de uso impuestos por la API de Spotify (rate limits). Para evitar problemas:\n- Divide las descargas en varias sesiones.\n- Revisa los archivos en la carpeta `logs` para verificar si se han producido errores relacionados con los límites de uso.\n- Espera un tiempo antes de realizar más solicitudes si encuentras problemas.\n\n**¿Qué hago si llego al límite de la API de Spotify?**\n- La API oficial de Spotify puede imponer límites de uso (rate limits) si se realizan demasiadas solicitudes en poco tiempo. Si esto ocurre, el bot puede mostrar mensajes de error o fallar temporalmente al descargar contenido. Espera unos minutos y vuelve a intentarlo; los límites son temporales y se restablecen automáticamente.\n- Evita lanzar muchas descargas masivas en poco tiempo.\n- Más información: [Spotify API Rate Limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits)\n\n**¿Cómo actualizo el bot?**\n- Si usas Docker, basta con hacer `docker pull mralexandersaavedra/spotdl-bot:latest` y reiniciar el contenedor.\n- Si usas instalación local, actualiza el repositorio y los requisitos con `git pull` y `pip install -r requirements.txt`.\n\n¿Tienes otra duda? Abre un [issue en GitHub](https://github.com/mralexsaavedra/spotdl-bot/issues).\n\n---\n\n## 📝 Licencia\n\nMIT © 2025 [@mralexsaavedra](https://github.com/mralexsaavedra)\n\n---\n\n## 🙌 Créditos\n\nProyecto basado en [spotDL](https://github.com/spotDL/spotify-downloader). Gracias a la comunidad por este gran software.\n\n---\n\nHecho con ❤️ por [mralexsaavedra](https://mralexsaavedra.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmralexsaavedra%2Fspotdl-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmralexsaavedra%2Fspotdl-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmralexsaavedra%2Fspotdl-bot/lists"}