Dans ce dépôt, je collectionne et explore des données liées aux pistes présentées dans les graphiques Spotify. Je m'appuie sur le travail que j'ai fait dans ce dépôt où j'ai déjà fait beaucoup de choses. Malheureusement, le traitement des données dans ce projet était vraiment désordonné, j'ai donc décidé de partir de zéro pour créer un ensemble de données plus propre.
J'ai trouvé des scripts CLI pour récupérer des données liées aux graphiques Spotify. Ils peuvent être trouvés dans le sous-dossier cli_scripts de ce projet. Comme l'indique le nom du dossier, les scripts peuvent tous être invoqués directement à partir de la ligne de commande. Vous pouvez appeler chaque script avec l'option -h pour obtenir des informations sur les arguments acceptés (exemple: python cli_scripts/get_all.py -h ).
Tout d'abord, j'ai proposé des scripts pour assembler des données pour les pistes du Spotify Daily Top 200. Malheureusement, ces données ne sont pas disponibles via l'API. En outre, il faut télécharger des fichiers CSV du graphique pour chaque région et suivre séparément (en accédant à la page des graphiques Spotify et en cliquant sur le bouton de téléchargement) qui est très gênant.
Cependant, j'ai travaillé autour de cela en créant deux scripts (voir le sous-dossier spotify_charts ):
download.py : automatise le processus de téléchargement des dossiers de fichiers CSV pour plusieurs régions (All ou un sous-ensemble spécifié via des arguments) et une plage de dates donnée (démarrage + fin de fin) en utilisant selenium (nécessite un compte Spotify / des informations d'identification!)combine_charts.py : combine les fichiers CSV du graphique Spotify téléchargé situé dans le répertoire spécifié dans un seul fichier .parquet Beaucoup d'informations intéressantes et de métadonnées sur la musique sur Spotify peuvent également être récupérées de l'API officielle de Spotify. Tous les scripts utilisant l'API Spotify (via le wrapper de l'API Python spotipy ) peuvent être trouvés dans spotify_api :
get_track_metadata.py : Répondez les métadonnées de la piste à partir du point de terminaison de l'API /tracks pour les ID de piste uniques mentionnés dans un fichier .parquet fourni. Sort un dossier de plusieurs fichiers de métadonnées .parquetget_album_metadata.py : fait la même chose que ci-dessus, uniquement pour les albums au lieu des pistes (en utilisant le point de terminaison de l'API /albums )get_artist_metadata.py : récupére les métadonnées des artistes pour tous les identifiants d'artistes uniques parmi plusieurs fichiers d'entrée (chacun ayant une colonne artists_id ), stockant également des métadonnées dans un dossier comme les autres scripts ci-dessusget_all.py : combine tous les scripts, obtenant d'abord des métadonnées de piste, puis des métadonnées de l'album pour tous les albums associés aux morceaux et enfin des métadonnées d'artistes pour tous les artistes de piste et d'album. Malheureusement, les informations pour les crédits de piste (en particulier, les auteurs-compositeurs et les producteurs) ne sont pas non plus disponibles via l'API public Spotify. Cependant, j'ai trouvé un moyen de contourner cela. On peut extraire les en-têtes de demande qui sont utilisés pour des demandes spécifiques faites par l'application Web Spotify, par exemple lors de l'ouverture des Show Credits Popup sur une page de piste et réutilisez-les pour faire d'autres demandes à la même API (inofficial / interne).
Cette approche peut être utilisée pour
# 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_2022python cli_scripts/spotify_api/get_all.py -i data/top200_2022/charts.parquetTODO: Ajoutez une commande appropriée une fois que les scripts sont «finis» (assez bon)
Pour que tout fonctionne, vous pouvez suivre ces instructions (en supposant que vous avez installé une version récente de Python)
Si vous le souhaitez, vous pouvez créer un nouvel environnement, par exemple avec conda :
conda env create --name=spotify-charts-analysis
conda activate spotify-charts-analysis
Pour faire fonctionner tous les scripts prêts à l'emploi, vous pouvez simplement installer le package helpers en exécutant
pip install -e .
Alternativement, vous pouvez bien sûr également installer des packages un par un pendant que vous rencontrez des problèmes en essayant d'exécuter des choses lol
Les paroles de piste sur Spotify peuvent être incorrectes, même pour des chansons assez populaires (par exemple ce morceau instrumental qui pour une raison quelconque a des paroles).