Voor ons artikel over de deelnemers van het Eurovisie Songfestival 2019 hebben we veel gegevens verzameld: hoe traag, vrolijk en dansbaar zijn de nummers? Hiervoor hebben wij gegevens van muziekdienst Spotify gebruikt. In dit artikel leggen we uit hoe jij dat ook kunt doen.
Het is allereerst goed om te weten dat Spotify een enorme lijst aan meetbare eigenschappen van elk nummer in zijn database bijhoudt. Via de gratis analyse- en statistiekensoftware R kun je deze gegevens binnenhalen en voor je eigen analyse gebruiken. Met de package spotifyr roepen we de API aan, met dplyr doen we wat eenvoudige filter-acties.
Hieronder lopen we stap voor stap door de code zodat jij voortaan ook datajournalistiek op muziek kunt toepassen.
Allereerst moet je een Spotify-account hebben, een developer-account aanmaken en zogeheten keys aanmaken. Dat kun je allemaal hier doen.
In R moet je de volgende twee libraries inladen.
library(spotifyr) library(dplyr)
De keys die je net hebt aangemaakt, moet je hieronder invullen. Daarmee laat je de Spotify-API weten dat jij een zoekopdracht in hun database wil uitvoeren.
Sys.setenv(SPOTIFY_CLIENT_ID = "jouw_spotify_client_ID")
Sys.setenv(SPOTIFY_CLIENT_SECRET = "jouw_spotify_client_secret")
access_token <- get_spotify_access_token()
Vanaf dit moment kun je op verschillende manieren de Spotify-API aanroepen. Voor ons specifieke voorbeeld willen we een aantal playlists opvragen. Dit kunnen jouw eigen playlists zijn, of die van een andere gebruiker. Zoek de naam van de eigenaar van de playlist op en vul hem hieronder in.
eigenaar = "naam_van_de_playlist_eigenaar"
Nu moet je de specifieke playlist nog invullen.
playlist = "naam_van_de_playlist"
Met bovenstaande gegevens kun je de zoekopdracht uitvoeren. In stappen uitgelegd: je zoekt eerst alle playlists van die eigenaar, vervolgens haal je alle tracks van die playlists binnen, en tenslotte filter je op de specifieke playlist.
playlists <- get_user_playlists(eigenaar)
tracks <- get_playlist_tracks(playlists)
playlist_songs <- tracks %>%
filter(playlist_name == playlist)
Deze gegevens kun je opslaan in de variabele track_features. Als je deze aanroept, vind je de meetbare gegevens van Spotify. In de documentatie van Spotify vind je exact wat elke kolom betekent.
track_features <- get_track_audio_features(playlist_songs)
Hieronder staat de volledige code.
# Van playlist naar Spotify
# Libraries inladen
library(spotifyr)
library(dplyr)
# Stel je tokens in. Ga naar https://developer.spotify.com/dashboard
Sys.setenv(SPOTIFY_CLIENT_ID = 'jouw_spotify_client_ID')
Sys.setenv(SPOTIFY_CLIENT_SECRET = 'jouw_spotify_client_secret')
access_token <- get_spotify_access_token()
# Eigenaar van playlist
eigenaar = ""
# Naam van de playlist
playlist = ""
playlists <- get_user_playlists(eigenaar)
tracks <- get_playlist_tracks(playlists)
playlist_songs <- tracks %>%
filter(playlist_name == playlist)
track_features <- get_track_audio_features(playlist_songs)
Wellicht heb jij met deze code nieuwe, interessante vondsten gedaan in Spotify. Dan horen we graag van je. Mail ons op pointer@kro-ncrv.nl. Als je iets tofs hebt gemaakt met deze informatie, doe ons even een Twitter-mention @pointer_kroncrv.