Caution
Restricción crítica — Proyecto bloqueado desde febrero de 2026
Spotify exige cuenta Premium para acceder a la Web API desde aplicaciones de desarrollador. Sin una suscripción Premium activa, la autenticación falla y no es posible extraer datos de ninguna playlist. Esto afecta a la totalidad de la funcionalidad del proyecto.
Aplicación interactiva construida con Streamlit con dos modos de trabajo: conexión en tiempo real con la API de Spotify o carga de un dataset CSV local. Genera visualizaciones y métricas básicas y avanzadas sobre pistas musicales.
El proyecto ofrece dos modos de trabajo seleccionables desde la barra lateral de Streamlit:
| Modo | Descripción |
|---|---|
| CSV local | Carga un dataset CSV (p. ej. el de HuggingFace) y genera el dashboard completo sin necesidad de cuenta Spotify |
| Spotify API | Conecta en tiempo real con la API de Spotify y extrae los datos de una playlist propia |
| Campo | Descripción |
|---|---|
track_name |
Nombre de la canción |
artist_names |
Artista o artistas |
album_name |
Álbum |
album_release_date |
Fecha de lanzamiento |
duration_min |
Duración en minutos |
popularity |
Popularidad (0–100) |
explicit |
Contenido explícito |
danceability |
Índice de bailabilidad |
energy |
Nivel de energía |
valence |
Valencia emocional |
tempo |
Tempo (BPM) |
added_at |
Fecha de incorporación a la playlist |
- Número total de canciones, artistas y álbumes únicos
- Top artistas y álbumes más repetidos
- Distribución de canciones por año
- Duración total de la playlist
- Popularidad media y porcentaje de canciones explícitas
- Canciones más largas
- Top canciones más populares — ranking por popularidad
- Distribución de energía musical — histograma
- Canciones más bailables — ranking por
danceability - Relación tempo vs energía — scatter plot
- Ranking de artistas — por número de canciones
- Explícitas vs no explícitas — gráfico de tarta
- Correlación danceability / popularity — coeficiente de correlación con scatter plot
- Clustering de canciones por estilo — KMeans (4 clusters) sobre
danceability,energy,valence,tempo - Tempo medio por artista — media de BPM para artistas con ≥ 3 canciones
- Canciones más energéticas — ranking por
energy
Spotify-Data/
├── app.py # Punto de entrada — interfaz Streamlit (modos CSV y API)
├── requirements.txt # Dependencias Python
├── .env # Credenciales de la API (no subir al repo)
├── spotify-tracks-dataset.csv # Dataset local (Plan B, no subir si es grande)
└── src/
├── config.py # Carga de variables de entorno y rutas
├── extractor.py # Extracción y transformación de datos de Spotify
├── metrics.py # Métricas básicas, avanzadas y clustering
└── spotify_service.py # Cliente autenticado de Spotipy
- Python 3.10 o superior
- Dependencias:
streamlit,pandas,matplotlib,scikit-learn,spotipy,python-dotenv - Para el modo Spotify API: cuenta Premium y aplicación registrada en el Spotify Developer Dashboard
Crea un fichero .env en la raíz del proyecto con tus credenciales:
SPOTIPY_CLIENT_ID=tu_client_id
SPOTIPY_CLIENT_SECRET=tu_client_secret
SPOTIPY_REDIRECT_URI=http://localhost:8888/callbackDada una URL como:
https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M
El playlist_id es la cadena que aparece tras /playlist/:
37i9dQZF1DXcBWIGoYBM5M
La aplicación también acepta la URL completa directamente.
Nota importante: Desde febrero de 2026, la API de Spotify restringe el acceso a los items de playlists ajenas. Usa una playlist propia o una playlist colaborativa en la que seas participante para garantizar que la extracción funcione correctamente.
- Filtro por artista y por género en el dashboard
- Filtro por canciones explícitas
- Nube de artistas
- Exportación a Excel además de CSV
- Comparación entre dos playlists o dos datasets
- Pestañas en el dashboard para separar vistas
- Caché con
st.cache_data - Visualización interactiva de clusters con Plotly
Windows
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtLinux / macOS
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtCrea el fichero .env en la raíz del proyecto con tus credenciales de Spotify (ver sección anterior).
streamlit run app.pyLa aplicación se abrirá automáticamente en el navegador en http://localhost:8501.
En la barra lateral izquierda (Modo de trabajo) elige:
- CSV local — introduce la ruta al fichero CSV y pulsa Cargar CSV.
- Spotify API — introduce el ID o URL de una playlist y pulsa Cargar playlist.
Desde febrero de 2026, Spotify requiere una cuenta Premium activa para poder utilizar la Web API en aplicaciones de desarrollador.
| Aspecto | Detalle |
|---|---|
| Afecta a | Todos los usuarios sin cuenta Premium |
| Impacto | La autenticación falla; el proyecto no puede extraer datos |
| Origen | Cambio de política de Spotify (febrero 2026) |
| Solución | Contar con una suscripción Spotify Premium activa |
Esta restricción bloquea completamente el avance del proyecto para usuarios con cuenta gratuita y constituye el principal impedimento para su uso en entornos educativos donde no se disponga de licencias Premium.
Ante la imposibilidad de acceder a la API en tiempo real sin cuenta Premium, el proyecto implementa soporte nativo para cargar un dataset CSV local.
Dataset utilizado: maharshipandya/spotify-tracks-dataset
Este dataset contiene más de 100 000 pistas con atributos de audio (danceability, energy, valence, tempo, etc.) y permite ejecutar tanto el dashboard básico como el dashboard avanzado (clustering, correlaciones, distribuciones) sin necesidad de cuenta Spotify.
- Descarga el CSV desde HuggingFace.
- Colócalo en la raíz del proyecto con el nombre
spotify-tracks-dataset.csv(o indica la ruta en el campo de la barra lateral). - Selecciona el modo CSV local en la barra lateral y pulsa Cargar CSV.