Skip to content

Repository files navigation

SpotDL — Spotify Downloader

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).

Requisitos

Instalación

git clone https://github.com/Tsagar3/SpotDL.git
cd SpotDL

Windows

winget install PHP.PHP.8.3
winget install yt-dlp.yt-dlp
winget install yt-dlp.FFmpeg
# habilitar extension=zip en php.ini

Las rutas de yt-dlp y ffmpeg se detectan automáticamente. No hace falta configurar nada.

Linux / macOS

# 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

Uso

# Windows
start.bat

# O manual (cualquier OS)
cd www
php -S localhost:8000

Abrí http://localhost:8000 en el navegador. Pegá el enlace de una playlist o track de Spotify, seleccioná los que quieras y descargá.

Formato

Opción Calidad
MP3 128kbps Estándar
MP3 192kbps Recomendado
MP3 320kbps Alta
FLAC Sin pérdida
OPUS Comprimido
M4A (AAC) Apple-friendly

Funcionalidades

  • 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)

Spotify API (opcional)

Sin configurar nada extra funciona para ~100 tracks por playlist (extracción HTML). Para obtener más tracks y datos adicionales:

  1. Creá una app en https://developer.spotify.com/dashboard
  2. Ingresá Client ID y Client Secret desde el panel de Configuración en la app
  3. Probá la conexión con el botón "Probar conexión"

Estructura

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

Stack

  • 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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages