En este repositorio, recopilo y exploro datos relacionados con pistas presentadas en las listas de Spotify. Construyo sobre el trabajo que hice en este repositorio donde ya hice muchas cosas. Desafortunadamente, el procesamiento de datos en este proyecto fue realmente desordenado, por lo que decidí comenzar desde cero para crear un conjunto de datos más limpio.
Se me ocurrieron scripts de CLI para obtener datos relacionados con los gráficos de Spotify. Se pueden encontrar en la subcarpeta cli_scripts
de este proyecto. Como sugiere el nombre de la carpeta, todos los scripts se pueden invocar directamente desde la línea de comando. Puede llamar a cada script con la opción -h
para obtener información sobre los argumentos aceptados (Ejemplo: python cli_scripts/get_all.py -h
).
Primero, se me ocurrieron scripts para ensamblar datos para las pistas de Spotify Daily Top 200. Desafortunadamente, estos datos no están disponibles a través de la API. Además, uno tiene que descargar archivos CSV del gráfico para cada región y rastrear por separado (navegando a la página de gráficos de Spotify y haciendo clic en el botón Descargar) que es muy inconveniente.
Sin embargo, trabajé alrededor de esto creando dos scripts (vea la subcarpeta spotify_charts
):
download.py
: automatiza el proceso de descarga de cuadros de archivos CSV para varias regiones (ya sea todas o un subconjunto especificado a través de argumentos) y un rango de fechas determinado (fecha de inicio + final) usando selenium
(¡requiere cuentas/credenciales de Spotify!)combine_charts.py
: Combina archivos CSV de gráficos Spotify descargados ubicados en el directorio especificado en un solo archivo .parquet
También se puede recuperar mucha información interesante y metadatos sobre música en Spotify de la API oficial de Spotify. Todos los scripts que usan la API de Spotify (a través de la envoltura de la API de spotipy
Python) se pueden encontrar en spotify_api
:
get_track_metadata.py
: obtenga metadatos de pista desde el punto final de la API /tracks
para ID de pista únicos mencionados en un archivo .parquet
proporcionado. Emite una carpeta de varios metadatos .parquet
get_album_metadata.py
: hace lo mismo que se indicó, solo para álbumes en lugar de pistas (usando el punto final de /albums
API)get_artist_metadata.py
: obtenga metadatos de artista para todas las ID de artista únicas entre varios archivos de entrada (cada uno con una columna artists_id
), también almacena metadatos en una carpeta como los otros guiones anterioresget_all.py
: combina todos los guiones, obteniendo primero los metadatos de la pista, luego los metadatos del álbum para todos los álbumes asociados con pistas y finalmente metadatos artísticos para todas las pistas y artistas de álbumes. Desafortunadamente, la información para los créditos de pista (específicamente, compositores y productores) tampoco está disponible a través de la API pública de Spotify. Sin embargo, se me ocurrió una manera de trabajar en torno a eso. Uno puede extraer los encabezados de solicitud que se utilizan para solicitudes específicas realizadas por la aplicación web Spotify, por ejemplo, al abrir el programa Show Credits
en una página de pista y reutilizarlos para hacer otras solicitudes al mismo punto final de la API (inofficial/interno).
Este enfoque se puede utilizar para
# download CSVs; might take a loooong time, can be interrupted and restarted/resumed later
python cli_scripts/spotify_charts/download.py -s 2022-01-01 -e 2022-12-31 -o data/scraper_downloads
# combine downloaded CSVs into single parquet file
python cli_scripts/spotify_charts/combine.py -o data/top200_2022
python cli_scripts/spotify_api/get_all.py -i data/top200_2022/charts.parquet
TODO: Agregue el comando adecuado una vez que los scripts estén 'terminados' (lo suficientemente bueno)
Para que todo funcione, puede seguir estas instrucciones (suponiendo que tenga una versión reciente de Python instalada)
Si lo desea, puede crear un nuevo entorno, por ejemplo, con conda
:
conda env create --name=spotify-charts-analysis
conda activate spotify-charts-analysis
Para que todos los scripts funcionen fuera de la caja, simplemente puede instalar el paquete helpers
ejecutando
pip install -e .
Alternativamente, por supuesto, también puede instalar paquetes uno por uno, ya que se encuentra con problemas tratando de ejecutar cosas jajaja
Las letras de la pista en Spotify pueden ser incorrectas, incluso para canciones bastante populares (por ejemplo, esta pista instrumental que por alguna razón tiene letras).