Descarga canciones y playlists de Spotify como MP3 con metadatos completos (título, artista, álbum, carátula, track number, año). Sin depender de la API de Spotify (extracción vía HTML + fallback a API opcional).
git clone https://github.com/Tsagar3/SpotDL.git
cd SpotDLwinget install PHP.PHP.8.3
winget install yt-dlp.yt-dlp
winget install yt-dlp.FFmpeg
# habilitar extension=zip en php.iniLas rutas de yt-dlp y ffmpeg se detectan automáticamente. No hace falta configurar nada.
# PHP
sudo apt install php8.3 php8.3-zip # Debian/Ubuntu
brew install php yt-dlp ffmpeg # macOS
# yt-dlp
pip install yt-dlp
# ffmpeg
sudo apt install ffmpeg # Debian/Ubuntu
brew install ffmpeg # macOS# Windows
start.bat
# O manual (cualquier OS)
cd www
php -S localhost:8000Abrí http://localhost:8000 en el navegador. Pegá el enlace de una playlist o track de Spotify, seleccioná los que quieras y descargá.
| Opción | Calidad |
|---|---|
| MP3 128kbps | Estándar |
| MP3 192kbps | Recomendado |
| MP3 320kbps | Alta |
| FLAC | Sin pérdida |
| OPUS | Comprimido |
| M4A (AAC) | Apple-friendly |
- Descargas paralelas (3 workers simultáneos)
- Subcarpetas por playlist
- Verificación de resultados en YouTube antes de descargar
- Búsqueda de letras (vía lyrics.ovh)
- Historial persistente de descargas
- Creación de ZIP con canciones seleccionadas
- Filtro por artista/canción
- Reintento automático con modal de error (3 intentos)
- Cache de playlists (TTL 10 min)
Sin configurar nada extra funciona para ~100 tracks por playlist (extracción HTML). Para obtener más tracks y datos adicionales:
- Creá una app en https://developer.spotify.com/dashboard
- Ingresá Client ID y Client Secret desde el panel de Configuración en la app
- Probá la conexión con el botón "Probar conexión"
www/
config.php — rutas de yt-dlp/ffmpeg (autodetección)
SpotifyClient.php — extracción de tracks vía API + HTML
index.php — frontend
api/
get_playlist.php — obtiene tracks de una URL de Spotify
download.php — descarga un track (yt-dlp + ffmpeg)
download_file.php — sirve archivos al navegador
zip.php — crea ZIP
search_youtube.php — busca candidatos en YouTube
lyrics.php — busca letras
embed_lyrics.php — incrusta letras en el MP3
history.php — historial de descargas
settings.php — configuración de credenciales
spotify_test.php — prueba conexión con Spotify API
scrape_track.php — scrapea track individual sin API
list.php — listado de archivos descargados
serve.php — sirve archivos inline
assets/
css/style.css
js/app.js
musica/ — carpeta de descargas por defecto
cache/ — cache de playlists y Zips temporales
- PHP 8.3 sin frameworks
- yt-dlp para descarga de audio
- ffmpeg para conversión e incrustación de metadatos
- Vanilla HTML/CSS/JS, tema oscuro
- Google Fonts (Inter) vía CDN