Buscando el top 20 en Spotify México
La plataforma Spotify suele dar sus cifras semanalmente, pero si con algunos recursos de RStudio podemos obtener los datos de manera diracta
#Bajamos las librerías
library(dplyr)
library(tidyr)
library(readr)
library(lubridate)
library(stringr)
library(spotifyr)
library(ggplot2)Agregamos nuestras credenciales de Spotify.
Como vimos en clase: con el número de cliente y código. Luego, generamos un token.
#client <- "NÚMERO_DE_CLIENTE_SPOTIFY_4_DEVELOPERS"
#secret <- "CÓDIGO_SECRETO"
#Sys.setenv(SPOTIFY_CLIENT_ID = client)
#Sys.setenv(SPOTIFY_CLIENT_SECRET = secret)
#access_token <- get_spotify_access_token()Identificamos el URL de donde se descargan los archivos.
url_prefix <- 'https://spotifycharts.com/regional/mx/daily/' #La mx identifica a México
url_suffix <- '/download' #Este sufijo es para todas las descargas.Hay que crear función para extraer los datos de una fecha determinada, ya que nuestro url principal se basa en una fecha
pull_top200 <- function(date) {
# URL por default con una cadena de texto
url <- str_c(url_prefix,format.Date(date),url_suffix)
# Extraemos los datos de Spotify
top200_df <- read.csv(url, skip=1) # Hay que saltarse una línea para quitar los metadatos de Spotify.
# A veces hay archivos que no existen, para ello debemos crear una excepción
ifelse(all(colnames(top200_df) %in% col_names),
top200_df <- top200_df %>% mutate(Date = date), # Creamos el atributo de fecha
top200_df <- data.frame()) # Esto devuelve un data frame vacío si es invalido
top200_df
}Con los parámetros establecidos y la extracción definida, podemos establecer un rango extraemos el Top 200 por día de todo el 2021
#Estos son los datos que contienen nuestra base
glimpse(top200_df)## Rows: 20,800
## Columns: 6
## $ Position <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ~
## $ Track.Name <chr> "DÃ\201KITI", "BICHOTA", "Hawái", "LA NOCHE DE ANOCHE", "C~
## $ Artist <chr> "Bad Bunny", "KAROL G", "Maluma", "Bad Bunny", "El Fantasma~
## $ Streams <int> 1116657, 1092485, 594003, 542777, 491206, 469022, 465886, 4~
## $ URL <chr> "https://open.spotify.com/track/4MzXwWMhyBbmu6hOcLVD49", "h~
## $ Date <date> 2021-01-01, 2021-01-01, 2021-01-01, 2021-01-01, 2021-01-01~
Filtramos y añadimos graficamos nuestros resultados. Top 20 de artistas
top_20 <- top200_df %>%
group_by(Artist) %>%
summarise(Total = sum(Streams)) %>%
arrange(desc(Total)) %>%
top_n(20, Total) %>%
ungroup() %>%
ggplot() +
geom_col(aes(x = reorder(Artist, Total), y = Total), fill = "forest green") +
coord_flip() +
xlab("Artista") +
ylab("Millones de reproducciones") +
ggtitle("Top 20 de temas en Spotify México")
top_20Ahora filtramos pero el top 20 de canciones
top_canciones <- top200_df %>%
group_by(Track.Name) %>%
summarise(Total_1 = sum(Streams)) %>%
arrange(desc(Total_1)) %>%
top_n(20, Total_1) %>%
ungroup %>%
ggplot() +
geom_col(aes(x = reorder(Track.Name, Total_1), y = Total_1), fill = "forest green") +
coord_flip() +
xlab("Canción") +
ylab("Millones de reproducciones") +
ggtitle("Top 20 de canciones en Spotify México")
top_canciones