Analyser une playlist Spotify avec R

analyser une playlist spotify avec R

Je ne sais pas ce que vous avez fait lors de l’annonce du confinement, mais personnellement, j’ai pris deux décisions absolument majeures :

  1. Augmenter mon forfait Netflix
  2. Passer à un abonnement Spotify Family !

Et mi-avril j’ai créée une playlist sur Spotify, que j’ai nommée, avec beaucoup d’originalité, “Confinement“, bien évidemment !

En entendant parler de re-confinement, je me suis demandée s’il était possible d’analyser cette playlist sous R, pour essayer de la caractériser.

J’ai fait quelques recherches, et j’ai trouvé le package Rspotify, qui permet, à partir de R,  se connecter à son compte spotify, et de récupérer de nombreuses informations comme :

  • la liste de nos playlists
  • la listes des musiques de chaque playlist
  • divers paramètres pour chaque musique (artiste, sa note de popularité, le tempo, la dansablité, la positivité des paroles, etc…)

Pour avoir une vision globale de ma playlist, j’ai ensuite réalisé un dashboard (avec le package flexdasboard, comme présenté dans l’article Comment faire un dashboard avec R ? )

👉 Cliquez ici pour accéder à l’article “Comment faire un dashboard avec R ?”

 

Voici ce que ça donne :

tableau de bord d'une playlist spotify

dasboard playlist spotify

 

👉 Cliquez ici pour visualiser le dashboard de ma playlist Spotify sur Rpubs

 

Je vais vous montrer, en pas à pas, comment j’ai procédé pour obtenir les données.

Remarque : Je ne pense pas qu’il faille nécessairement disposer d’un compte premium pour ça, mais je n’ai pas vérifié.

 

1. Etapes préliminaires sur Spotify

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:

Menu développeur spotify

 

Puis allez sur l’onglet “Dashboard” (en haut)

 

dashboard spotify

 

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:

  • entrez une adresse dans la partie website (je pense que vous pouvez écrire n’importe quoi).
  • écrivez http://localhost:1410 dans la partie Redirects URls (c’est indispensable).

 

setting spotify

 

Puis cliquez sur l’application, vous allez accéder à :

  • votre “client ID”
  • votre “client secret”

identifiants spotify

2. Etape préliminaire sur R

Pour que R puisse communiquer avec Spotify, il est nécessaire, d’établir une autorisation d’accès. Cela nécessite d’employer la fonction spotifyOAuth(), comme ceci :

 

3. Préparer les données à analyser

3.1 Récupérer le nom des playlists

Pour récupérer le nom et l’identifiant de mes playlists, j’ai utilisé la fonction getPlaylists(), avec, en argument, mon nom d’utilisateur spotify (cdv04), comme ceci :

 

 

3.2 Récupérer l’identifiant d’une playlist

J’ai ensuite stocké l’identifiant de ma playlist “Confinement” dans l’objet pl_Confinement_id :

 

 

3.3 Récupérer les pistes d’une playlist

Pour cela, j’ai utilisé la fonction getPlaylistSongs(), en indiquant en argument :

  • mon nom d’utilisateur
  • l’identification de la playlist
  • la clé d’autorisation de connexion à mon compte Spotify

 

3.4 Récupération des informations des pistes de la playlist 

La fonction getFeatures() permet d’accéder à de nombreuses informations telles que:

  • acousticness (entre 0 et 1)
  • danceability (entre 0 et 1)
  • duration_ms
  • energy (entre 0 et 1)
  •  instrumentalness(entre 0 et 1)
  •  key(tonalité)
  • mode (mineur ou majeur)
  • liveness( entre 0 et 1)
  • loudness (-60 db et 0 db)
  •  speechiness (spoken words, entre 0 et 1)
  • tempo (bpm)
  • valence (positivité musicale, entre 0 et1)

Cette fonction getFeatures(), ne peut prendre en argument qu’un seul numéro d’identification. Afin d’obtenir les informations de toutes les musiques de la playlist, j’ai donc employé une boucle for().
A chaque itération je récupère les informations de la musique concernée dans un objet temporaire (appelé tmp), puis je colle les informations avec les informations des musiques précédentes en utilisant la fonction bind_rows(), comme expliqué dans cet article.

 

Voici les premières lignes de la table obtenue :

 

3.5 Ajout d’informations complémentaires

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 :

  • le nom de la chanson (variable tracks)
  • son id spotify
  • le nom de l’artiste
  • la popularité de l’artiste

Avant de récupérer le nom des chansons, j’en ai raccourci certains :

 

Puis j’ai récupéré les informations qui m’intéressaient, et réalisé une jointure avec la fonction left_joint pour ajouter ces informations à la table Confinement_features :

 

3.6 Exportation des données

Une fois les données préparées, je les ai exportées sous la forme d’un fichier csv. Pour cela, j’ai d’abord créé un dossier data_output, et j’ai exporté les données dans ce dossier de mon projet R.
Le but de cette exportation est de pouvoir, ensuite, lors de la phase du dashboard, pouvoir facilement les importer.

 

4. Dashboard

Ensuite, j’ai procédé à l’analyse de la playlist, en réalisant un dashboard, à l’aide du package flexdasboard.

👉 Cliquez ici pour visualiser le dashboard de ma playlist Spotify sur Rpubs

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

4.1 L’en-tête :

en tete flexdasboard

4.2 Chuck set up et importation des données

 

tableau de bord avec R

4.3 Page Analyse

4.3.1 Les boxes de la première ligne

boxes tableau de bord

4.3.2 La jauge de la seconde ligne

dashboard Spotify

4.3.3 Les loliplots de la troisième ligne

tableau de bord

4.3.4 Les plots de l’ACP de la quatrième ligne

ACP

4.3.5 Le dendrogramme de classification hiérarchique

dendrogramme sur ACP

4.4 Page data

page data du tableau de bord

Cette analyse de la playlist n’est pas forcément la plus pertinente, mon souhait était seulement de vous montrer comment faire. 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 🙏

👉 Cliquez ici pour soutenir le blog Statistiques et Logiciel R

Image par Maret Hosemann de Pixabay

 

Poursuivez votre lecture avec d’autres article de data analy / data sciences

Partager l'article
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

3 commentaires

  1. Chloé Répondre

    Bonjour
    Ton article est très intéressant et très bien fait.
    Sais-tu si c’est possible de faire pareil avec Deezer?

    • Claire Della Vedova Auteur de l’articleRépondre

      Bonjour Chloé,

      j’ai faite une petite recherche, et je n’ai rien trouvé.

  2. Bély Répondre

    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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *