Skip to content

Introduction to music data science using webscraping and SpotifyR

Notifications You must be signed in to change notification settings

NicolasRuth/spotify_data_course

Repository files navigation

Spotify Datenanalysekurs

Nick Ruth 3/12/2021

Einführung in die Spotify-Datenalyse für Musik- und Medienstudierende

In diesem Projekt sollen Studierende erste Erfahrungen mit der Beschaffung von Daten über die Enticklerschnittstelle von Spotify zu beziehen, diese wiederum analysieren üben und schließlich eine Vorstellung von einem stark vereinfachten Empfehlungsalgorithmus zu bekommen.

Erste Schritte

Zunächste werden erste Übungen mit der freien Softwareumgebung und Programmiersprache R gemacht.

fuenf <- 5 
print(fuenf)
## [1] 5
fuenf * 4
## [1] 20

Visuelle Datenanalyse

Anschließend werden einige einfache Analysen mit einem Datensatz von Spotify durchgeführt. Dabei werden die Audio Features von Songs aus den Jahrescharts von 2010 bis 2020 genauer betrachtet.

library(ggplot2)
spotify_data <- read.csv("./data/charts.csv")

beispiel_dauer_pro_jahr <- ggplot(data = spotify_data,
                                  aes(x = as.factor(year), 
                                      y = duration_ms/1000))

beispiel_dauer_pro_jahr + 
  geom_boxplot(aes(fill = factor(year))) +
  ggtitle("Dauer der Songs pro Jahr") +
  scale_fill_brewer(palette = "Spectral",
                    name = "Jahre") +
  xlab("Jahre") +
  ylab("Dauer in Sekunden")

Eigener Empfehlungsalgorithmus

Um ein Verständnis dafür zu bekommen, wie Empfehlungen bei Spotify funktionieren könnten, sollen zunächst eigene Regeln definiert werden, um schließlich eine Funktion zu schreiben, die eine Empfehlung basierend auf den gewählten Regeln ausgibt.

mein_tempo_minimum <- 120 

mein_genre <- as.character("dance pop")

mein_dance <- 0.65

mein_db <- -7

mein_value <- 0.50

algoRuthmus <- function(songtitel) {
  auswahl <- spotify_data[spotify_data$title == songtitel, ]
  punkte <-  0
  if(auswahl$tempo >= mein_tempo_minimum) {punkte <- punkte + 1}
  if(auswahl$genre1 == mein_genre) {punkte <- punkte + 1}
  if(auswahl$danceability >= mein_dance) {punkte <- punkte + 1}
  if(auswahl$loudness >= mein_db) {punkte <- punkte + 1}
  if(auswahl$valence >= mein_value) {punkte <- punkte +1}
  ergebnis <- (punkte/5) * 100
  sprintf("Dieser Song entspricht zu %s Prozent deinem Geschmack.", ergebnis)
}
algoRuthmus("Pumped Up Kicks")
## [1] "Dieser Song entspricht zu 100 Prozent deinem Geschmack."

Datensammlung

Als Bonus für Fortgeschrittene gibt es noch ein Script, in dem die Datensammlung geschildert wird. Hier wird zunächst Webscraping mittels der rvest betrieben, um die Chartlisten zu beziehen. Anschließend wird das SpotifyR package genutzt, um mit der Spotify API zu kommunizieren.

About

Introduction to music data science using webscraping and SpotifyR

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages