Skip to content

Repository files navigation

🎵 Spotify Playlist Dashboard

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.


Descripción

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

Campos del dataset

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

Métricas básicas

  • 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

Métricas avanzadas (dashboard ampliado)

  • 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

Estructura del proyecto

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

Requisitos previos

  • 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

Variables de entorno

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/callback

Cómo obtener el playlist_id

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


Mejoras futuras

  • 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

Cómo ejecutar la aplicación

1. Crear el entorno virtual e instalar dependencias

Windows

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

Linux / macOS

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

2. Configurar las credenciales

Crea el fichero .env en la raíz del proyecto con tus credenciales de Spotify (ver sección anterior).

3. Lanzar la aplicación Streamlit

streamlit run app.py

La aplicación se abrirá automáticamente en el navegador en http://localhost:8501.

4. Seleccionar el modo de trabajo

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.

⛔ Restricción crítica: Spotify Premium obligatorio

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.


🔄 Plan B: Dataset estático de HuggingFace (operativo)

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.

Cómo usarlo

  1. Descarga el CSV desde HuggingFace.
  2. 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).
  3. Selecciona el modo CSV local en la barra lateral y pulsa Cargar CSV.

About

Proyecto de Python para analizar métricas sacadas de un dataset de Huggingface con histórico de Spotify. Integración con API de Spotify y Spotipy para obtener datos de playlist de Spotify.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages