Remarque : Je ne pense pas qu’il faille nécessairement disposer d’un compte premium pour ça, mais je n’ai pas vérifié.
Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
La première chose à faire est d’aller sur la page d’accueil de Spotify et de vous connecter à votre compte.
Ensuite scrollez la page vers le bas, et allez sur l’élément `Developpeurs` du menu `communautés`:
Puis allez sur l’onglet “Dashboard” (en haut)
Et cliquez sur le bouton “CREATE AN APP”.
Donnez un nom (j’ai appelé la mienne blog_slr2), décrivez votre application (j’ai écrit “dashboard pour playlist” ), et cochez les deux cases.
Ensuite cliquez sur le bouton “EDIT SETTINGS”, puis:
Puis cliquez sur l’application, vous allez accéder à :
library(Rspotify)
keys <- spotifyOAuth(app_id="blog_slr2",
client_id="0c368.....",
client_secret="48bae72....")
my_playlists <- getPlaylists("cdv04",token=keys)
## Auto-refreshing stale OAuth token
my_playlists
> my_playlists
id name ownerid
1 5em3kNfkcyDBTiTSUUyEEg Le kit de survie De Barbara Butch 118423851
2 0stfauWdNBNRCxjwzwFzkM post_confinement cdv04
3 2y4ncIWocQjzdLAZjJc1Wv Confinement cdv04
4 37i9dQZF1DWUF3bcja4I8P Le ménage en musique spotify
5 37i9dQZF1DXdrln2UyZD7F La vie est belle spotify
6 3NpfFRm9NFvcWAjuSi9sly Pour chanter sous la douche alexandremoxhet
7 37i9dQZF1DX720GaRlTmKS Concentration Maximum spotify
8 7d3xqiNDoDPCmR3fYg3Jpz Automne2018 cdv04
9 37i9dQZF1DX8685vIIepKh Garde la pêche ! spotify
10 37i9dQZF1DWVAWlq3l00p0 Top Variété spotify
11 2ijbsOFT3nSeBRZ8qIAvFn L's cdv04
12 73NpxXOj79ZwqUXWUJ9TBh Glenn Gould Variaciones Goldberg 1981 nestorjimenezruiz
13 2PMydNsusPsslhkScbkKqa avril 2018 cdv04
tracks
1 53
2 2
3 54
4 50
5 60
6 21
7 215
8 4
9 50
10 50
11 8
12 33
13 22
library(tidyverse)
pl_Confinement_id <- my_playlists %>%
filter(name=="Confinement") %>%
pull(id)
pl_Confinement_id
## [1] "2y4ncIWocQjzdLAZjJc1Wv"
getPlaylistSongs()
, en indiquant en argument :Confinement_songs <- getPlaylistSongs("cdv04",pl_Confinement_id,token=keys)
head(Confinement_songs)
tracks id
1 Mourir vieux (avec toi) 7EwK4HWRAunokum0nNo7il
2 Sugar (feat. Francesco Yates) 5tf1VVWniHgryyumXyJM7w
3 This Girl (Kungs Vs. Cookin' On 3 Burners) 1A8j067qyiNwQnZT0bzUpZ
4 Changes - Radio Mix 2SdMEke7JCBEo8t60iyw2r
5 Want to Want Me 7oGZAicScQt96OAW4AruYy
6 bad guy 2Fxmhks0bxGSBdJ92vM42m
popularity artist artist_full
1 54 Tim Dup Tim Dup
2 77 Robin Schulz Robin Schulz feat. Francesco Yates
3 78 Kungs Kungs feat. Cookin' On 3 Burners
4 62 Faul & Wad Ad Faul & Wad Ad feat. PNAU
5 77 Jason Derulo Jason Derulo
6 89 Billie Eilish Billie Eilish
artist_id album
1 2Ksaxtwx8hMgjUkzIoGDXE Mélancolie heureuse - Nouvelle impression
2 3t5xRXzsuZmMDkQzgOX35S Sugar
3 7keGfmQR4X5w0two1xKZ7d Layers
4 6HUm6AHJE0oisACMN6NNJ5 Changes
5 07YZf4WDAMNwqr4jfgOZ8y Everything Is 4
6 6qqNVTkY8uBg9cP3Jd7DAH WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?
album_id
1 1qXI0l7V93M0KCinTOZwcW
2 5XyJzEROSmup2TcWmVjTIt
3 66KCBRiOFSs9bki2A15WlB
4 5T513gBStZcClfbKCRkE9E
5 59eUYETmE1zi31ESb3SUkI
6 0S0KGZnfBGSIssfF54WSJh
getFeatures()
permet d’accéder à de nombreuses informations telles que:# initialisation de la table qui contiendra les données
Confinement_features <- data.frame()
for (i in 1 : nrow(Confinement_songs))
{
tmp <- getFeatures(Confinement_songs$id[i], token=keys)
Confinement_features<-bind_rows(Confinement_features, tmp)
}
Voici les premières lignes de la table obtenue :
head(Confinement_features)
id danceability energy key loudness mode speechiness
1 7EwK4HWRAunokum0nNo7il 0.787 0.797 7 -6.760 1 0.0994
2 5tf1VVWniHgryyumXyJM7w 0.636 0.815 5 -5.098 0 0.0581
3 1A8j067qyiNwQnZT0bzUpZ 0.792 0.717 0 -4.759 0 0.0393
4 2SdMEke7JCBEo8t60iyw2r 0.772 0.700 1 -7.285 1 0.0332
5 7oGZAicScQt96OAW4AruYy 0.775 0.680 0 -5.508 0 0.0629
6 2Fxmhks0bxGSBdJ92vM42m 0.701 0.425 7 -10.965 1 0.3750
acousticness instrumentalness liveness valence tempo duration_ms
1 0.48500 3.39e-05 0.1040 0.794 105.958 199120
2 0.01850 0.00e+00 0.1630 0.636 123.063 219043
3 0.09270 3.59e-05 0.2260 0.466 121.985 195547
4 0.00585 4.90e-01 0.0745 0.426 126.017 202173
5 0.00906 0.00e+00 0.1090 0.656 114.025 207719
6 0.32800 1.30e-01 0.1000 0.562 135.128 194088
time_signature uri
1 4 spotify:track:7EwK4HWRAunokum0nNo7il
2 4 spotify:track:5tf1VVWniHgryyumXyJM7w
3 4 spotify:track:1A8j067qyiNwQnZT0bzUpZ
4 4 spotify:track:2SdMEke7JCBEo8t60iyw2r
5 4 spotify:track:7oGZAicScQt96OAW4AruYy
6 4 spotify:track:2Fxmhks0bxGSBdJ92vM42m
analysis_url
1 https://api.spotify.com/v1/audio-analysis/7EwK4HWRAunokum0nNo7il
2 https://api.spotify.com/v1/audio-analysis/5tf1VVWniHgryyumXyJM7w
3 https://api.spotify.com/v1/audio-analysis/1A8j067qyiNwQnZT0bzUpZ
4 https://api.spotify.com/v1/audio-analysis/2SdMEke7JCBEo8t60iyw2r
5 https://api.spotify.com/v1/audio-analysis/7oGZAicScQt96OAW4AruYy
6 https://api.spotify.com/v1/audio-analysis/2Fxmhks0bxGSBdJ92vM42m
Pour que la table de données Confinement_features
soit plus lisible, j’ai préféré récupérer certaines infos contenues dans la table Confinement_songs
, telles que :
Avant de récupérer le nom des chansons, j’en ai raccourci certains :
Confinement_songs$tracks[3] <- "This Girl"
Confinement_songs$tracks[7] <- "Sweet Dreams"
Confinement_songs$tracks[10] <- "Can't Hold Us"
Confinement_songs$tracks[19] <- "Feels"
Confinement_songs$tracks[23] <- "One Kiss"
Confinement_songs$tracks[25] <- "Speechless"
Confinement_songs$tracks[27] <- "My Life Is Going On"
Confinement_songs$tracks[29] <- "Djon maya maï"
Confinement_songs$tracks[31] <- "One Day"
Confinement_songs$tracks[44] <- "Prayer In C"
Confinement_songs$tracks[48] <- "Another Brick In The Wall"
left_joint
pour ajouter ces informations à la table Confinement_features
:Confinement_songs_tracks <- Confinement_songs %>%
select(tracks, id, artist, popularity)
# ajout du nom des songs
Confinement_features <- Confinement_features %>%
left_join(Confinement_songs_tracks) %>%
select(id,tracks, artist,popularity, everything()
dir.create("data_output")
write.csv2(Confinement_features, here::here("data_output","Confinement_features.csv"), row.names = FALSE)
Remarque : si vous ne visualisez rien, changer de navigateur (firefox par exemple).
Pour cela, j’ai commencé par ouvrir un template flexdashboard, comme décrit ici.
Voici des copies écran des différentes parties du dashboard:
J’espère que cet article vous donnera envie d’essayer d’analyser vos propres playlists.
N’hésitez pas à me dire, en commentaire, si vous souhaitez plus d’article de data analyse/data sciences, comme celui-ci
Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee 🙏
Image par Maret Hosemann de Pixabay
Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
3 réponses
Bonjour
Ton article est très intéressant et très bien fait.
Sais-tu si c’est possible de faire pareil avec Deezer?
Bonjour Chloé,
j’ai faite une petite recherche, et je n’ai rien trouvé.
Très intéressant, j’ai appliqué le code R en utilisant mon compte Spotify et il fonctionne très bien. Merci de votre publication 🙂
Clément Bély