Analisando o gosto musical dos meus amigos, percebei que muitos deles estavam escutando umas músicas novas em suas playlists. E quando essas músicas começavam a tocar, não tinha ninguém que ficasse calado ou mesmo parado. Isso mesmo, estou falando delas, das cantoras sertanejas! Quem não sabe, nem que seja, um trechinho de alguma música de Marília Mendoça ou aquela do famoso cinquenta reais (Naiara Azevedo), pois é, não tem como não conhecer. Vendo como as cantoras sertanejas conquistaram seu espaço nos últimos tempos, decidi analisar se houve realmente um BOOM no sertanejo feminino, e desde quando começou.
Existem dezenas de cantoras femininas, como filtrar e escolher as que mais representam essa parcela da música sertaneja? Para isso, escolhi uma playlist do Spotify, Rainhas do Sertanejo, que reune as cantoras que mais conquistaram o público nos últimos anos. Analisando essa playlist, dei uma scrapeada no spotify, consegui os dados dessa playlist (Artistas, popularidade, número de seguidores, e outros dados) e montei um ranking dessas artistas. Mas como analisar sua carreira em relação aos anos, a API do Spotify não disponibiliza dados segundo os anos, então tive que recorrer ao YouTube dessas cantoras e capturar esses dados. Fiz outro scrape, dessa vez no YouTube, e fiz a coleta dos dados dos canais dessas cantoras.
O processo de análise foi dividido em duas partes, a coleta dos dados e sua análise.
A captura dos dados envolveu o acesso a duas APIs a do Spotify e a do YouTube. Vamos agora ao processo de acesso aos dados do Spotify. O Rspotify é um pacote novo e não está disponível no CRAN, mas já está funcional.
# instalando o Rspotify
devtools::install_github("tiagomendesdantas/Rspotify")
Temos agora as bibliotecas que serão necessárias à nossa análise.
# instalando o Rspotify
# devtools::install_github("tiagomendesdantas/Rspotify")
# instalando o TubeR
# devtools::install_github("soodoku/tuber", build_vignettes = TRUE)
#bibliotecas utilizadas
library(Rspotify) # Acesso a API do Spotify
library(tuber) # Acesso a API do YouTube
library(dplyr) # Manipulação de dados
library(tibble) # Criação de dataframes
library(lubridate) # Manipulação de datas
library(mondate) # Manipulação de datas
library(zoo) # Manipulação de datas
library(tidyr) # Funcionais
library(purrr) # Funcionais
library(plotly) # Gráficos
library(streamgraph) # Gráficos
Com as dependências configuradas com sucesso, precisamos realizar a autenticação com o Spotify. (Não precisa dizer, mas é necessário ter uma conta no serviço). Para realizar a autenticação, é necessário ter em maos um app_id, um client_id e client_secret, o acesso a essas chaves é feito criando um App dentro da sua conta do Spotify, essa é a parte mais burocrática. O pacote Rspotify disponibiliza um tutorial para realizar esse cadastro (veja aqui). Credenciais em mãos é hora de acessar os dados.
keys <- spotifyOAuth("app_id","client_id","client_secret")
Agora precisamos dos dados da playlist (Rainhas do Sertanejo) que usaremos como base. Para acessar o id e o dono da playlist veja o passo a passo aqui. O método getPlaylistSongs(owner_playlist, playlist_id, keys) retorna um dataframe contendo as informações da playlist, no nosso caso, selecionamos artist, id, name, popularity, followers.
# owner: spotify
# playlist_id: 37i9dQZF1DXcC14V9ZdJ9I
rainhas_do_sertanejo_playlist <- getPlaylistSongs("spotify", "37i9dQZF1DXcC14V9ZdJ9I", token = keys) %>%
mutate(artistInfo = map(artistId, getArtistinfo),
artist = artist %>% tolower) %>%
rename(track_popularity = popularity,
track_id = id) %>%
unnest(artistInfo) %>%
select(artist, id, name, popularity, followers)
head(rainhas_do_sertanejo_playlist)
## artist id name popularity
## 1 lucy alves 3odaJsfozTVhSYdib7ORiJ Lucy Alves 35
## 2 júlia & rafaela 7JJBuq3tgc4y2NO0TqAm02 Júlia & Rafaela 46
## 3 maiara & maraisa 59jlthNnbmim5l9tmNA7se Maiara & Maraisa 73
## 4 simone & simaria 0MInKJqZscEeNc5K3K0mkE Simone & Simaria 71
## 5 marília mendonça 1yR65psqiazQpeM79CcGh8 Marília Mendonça 78
## 6 maiara & maraisa 59jlthNnbmim5l9tmNA7se Maiara & Maraisa 73
## followers
## 1 5171
## 2 8384
## 3 976919
## 4 399496
## 5 1054538
## 6 976919
Dando uma olhada nos nossos dados, montamos um ranking das cantoras sertanejas, baseado na sua popularidade no Spotify
#ranking das cantoras sertanejas
ranking_cantoras_sertanejas <- rainhas_do_sertanejo_playlist %>%
group_by(artist) %>%
summarise(artist_ = first(artist),
id_ = first(id),
popularity_ = first(popularity),
nFollowers = first(followers))
margem <- list(l=60, r=60, b=100, t=100, pad=4) #margens do gŕafico
plot_ly(ranking_cantoras_sertanejas,
x = ~ranking_cantoras_sertanejas$artist_,
y = ~ranking_cantoras_sertanejas$popularity_,
type = 'scatter',
color = ranking_cantoras_sertanejas$artist_,
size = ~popularity_,
hoverinfo = 'text',
text = ~paste('Cantora: ', ranking_cantoras_sertanejas$artist_,
'</br> Popularidade: ', ranking_cantoras_sertanejas$popularity_,
'</br> Seguidores: ', ranking_cantoras_sertanejas$nFollowers)) %>%
layout(title = "Ranking Cantoras Sertanejo by Popularidade Spotify",
xaxis = list(title="", tickangle = 30),
yaxis = list(title="Popularidade"),
showlegend = FALSE,
margin=margem)
Analisando o gráfico acima, vemos que as cantoras sertanejas mais populares no Spotify é Marília Mendonça com popularidade valendo 78, em segundo lugar a dupla Maiara e Maraisa com 73 e depois Simone e Simaria. A API do Spotify não disponíbiliza como é calculada a propriedade popularity.
Com a nossa lista das cantoras em mãos, utilizaremos a biblioteca tuber para acessar a API do YouTube e extrair as informações que necessitamos dos seus canais.
#versão mais recente do pacote
devtools::install_github("soodoku/tuber", build_vignettes = TRUE)
#carregando bibliotecas necessarias
library(tuber) # Acesso a API do YouTube
Precisamos fazer a autenticação com o YouTube, é necessário um id e um secret. Para saber como fazer isso, siga o passo a passo disponível em Configurando API YouTube Com seu id e secret em mão, agora vamos configurar o acesso do tuber à API.
#autenticando com youtube
yt_oauth(app_id = "id_secret",
app_secret = "toke_secret")
Se tudo ocorrer bem, após rodar o código acima, uma janela será aberta no seu navegador confirmando a autenticação, após isso você pode voltar para o RStudio e iniciar os trabalhos.
Precisamos do id do canal de cada cantora, conseguimos essa informação na url do youtube www.youtube.com/channel/<channel_id>.
A Função tuber:: yt_search() pesquisa por videos e sua informações. Mais detalhes sobre a biblioteca tuber. Por default, a função yt_search() possui um número máximo de requisições, 50 no total. Mas não desanime, podemos configurá-la setando seus parâmetros type = “video” e channel_id = “id_de_algum_canal”, o número de requisições passa para 500 resultados. Para facilitar e automatizar nosso trabalho, adaptei a função get_videos() que recebe como parâmetro um dataset contendo datas de início e de término (em um dataframe com apenas uma linha) e o id_do_canal (em formtato de string) e devolve todos os vídeos do canal nesse período.
get_videos <- function(dates, id_channel) {
yt_search(term = "",
type = "video",
channel_id = id_channel,
published_after = dates$start,
published_before = dates$end)
}
Cada linha do dataframe de datas representa períodos de um ano, de 2009 a 2017. (2009 porque foi o ano em que a primeira cantora (Katy Perry) ingressou no YouTube). O mutate formata as datas no padrão exigido pela função yt_search(). Veja help(yt_search) para mais informações.
dates <- tibble(start = seq(ymd("2008-01-01"), ymd("2017-01-01"), by = "years"),
end = seq(ymd("2008-12-31"), ymd("2017-12-31"), by = "years")) %>%
mutate(start = paste(start, "T0:00:00Z", sep = ""),
end = paste(end, "T0:00:00Z", sep = ""))
Por fim, atribuímos ao objeto videos as informações de todos os vídeos do canal da cantora de 2008 até 2017. (Caso não possua vídeos nesse perído uma lista vazia será retornada). Por exemplo, vamos pegar as informações dos vídeos da cantora Marília Mendonça. O mesmo passo será realizado para as demais artistas.
videos_MariliaMendonca <- by_row(.d = dates, "UCwfEOn0O1DWcyTgzVVu28ig", ..f = get_videos, .to = "videos_info")
Precisamos das estatísticas dos vídeos, para isso utilizei a função get_videos_stats() que recebe um dataframe de uma linha contendo uma coluna $video_id e usando a função tuber::get_stats(), faço o scrape das estatísticas do vídeo.
#pegando estatísticas dos vídeos
get_videos_stats <- function(df_row) {
get_stats(video_id = df_row$video_id)
}
Hora de montar os datasets. Cada elemento da coluna video_info contém um dataframe com as informações dos vídeos de um determinado ano. Utilizando a função dplyr::bind_rows(), junteo esses dataframes em um só. Selecionamentos apenas as colunas de nosso interesse: title, publishedAt e video_id. Por fim, utilizei os id’s para baixar as estatítisca de cada vídeo usando a função get_videos_stats(). As estatísticas são salvas na coluna $vídeos_stats do dataframe resultado.
dados_MariliaMendonca <- bind_rows(videos_MariliaMendonca$videos_info) %>%
select(title, publishedAt, video_id) %>%
by_row(..f = get_videos_stats, .to = "videos_stats")
Após o processamento, teremos um dataset no seguinte formato
head(info_videos_geral)
## Nome ano total_views
## 1 Bruna Viola 2015 4155640
## 2 Bruna Viola 2016 5695150
## 3 Day e Lara 2016 17629928
## 4 Day e Lara 2017 2894069
## 5 Fernanda Costa 2015 134133
## 6 Fernanda Costa 2016 4920
Com os dados prontos, finalmente vamos para as análise. Para melhor estudarmos os resultados, vamos agrupar por ano e sumarisar os views. Como o número de views entre os vídeo é discrepante, decidi utilizar a escala de logarítmo para normalizar os dados.
resume_rainhas_sertanejo <- rainhas_sertanejo %>%
mutate(date = (format(as.Date(rainhas_sertanejo$publishedAt), format = "%d/%m/%Y")),
quarterYear = as.yearqtr(as.Date(rainhas_sertanejo$publishedAt)),
year = format(as.Date(rainhas_sertanejo$publishedAt, format="%Y"),"%Y"))
resume_anual <- resume_rainhas_sertanejo %>%
group_by(Nome, year) %>%
summarise(mean_views = log(mean(as.numeric(views))))
resume_anual$mean_views <- as.integer(resume_anual$mean_views)
O objetivo com essa análise, é observar o crescimento do consumo de música sertaneja feminina, nos últimos anos. A partir dos dados obtidos, vamos verificar se existe realmente esse crescimento
#resume anual
streamgraph(resume_anual, "Nome", "mean_views", "year", offset = 'zero') %>%
sg_axis_x(1, "year", "%Y") %>%
sg_axis_y(0, "year")
O gráfico acima confima minha observação, não só meus amigos começaram a escutar esse gênero da música, como também os usuários do YouTube, 2015 é realmente o ano em que aconteceu essa explosão na música sertaneja feminina, o consumo de música aumentou bastante. Surge agora a pergunta, o que aconteceu nesse ano para que esse aumento ocorresse? Primeiro, depois de 2015 o número de cantoras no YouTube aumentou e com isso, a quantidade de views também. A visibilidade feminina no meio sertanejo aumentou muito, conquistando um espaço que antes pertencia mais aos cantores.
É importante ressaltar que os dados são acumulativos, ou seja, por exemplo, Marília Mendonça lançou um vídeo em 2015, a coleta capturou todos os views que esse vídeo teve desde a sua postagem até hoje.
Observando mais a fundo esse resultado, conseguimos ver uma tendência crescente no número de views dos canais das cantoras. Mas eu fui questionar, realemente todas estão crescendo? Para responder essa questão, analisei separadamente as duas cantoras que possuíam mais views (Marilia Mendonça, Maiara e Maraisa) e as que estão a mais tempo no YouTube (Paula Fernandes e Wanessa Camargo).
Para comprovar se a tendência é crescente ou não, utilizei um mondelo de regressão linear simples que leva em consideração o número de views em decorrência do tempo.
library(broom) # Regressao Linear Simples
lm.MariliaMendonca <- lm(log(viewCount) ~ publishedAt, data= videos_stats_MariliaMendonca)
Podemos ver que a tendência do número de views dos vídeos de Marilia Mendonça é crescente, desde seu início em 2013 até o momento, vemos que os seus vídeos de 2015 estão bem acima da média o que aumenta mais ainda confiança de que foi em 2015 que a música sertaneja feminina estourou. Além de observar a tendência, podemos ver quais foram os seus maiores sucessos.
plot_ly(videos_stats_MariliaMendonca, x = ~publishedAt,
hoverinfo = 'text',
text = ~paste(title,
'</br> ViewCount: ', viewCount)) %>%
add_markers(y = ~log(viewCount)) %>%
add_lines(x = ~publishedAt, y = fitted(lm.MariliaMendonca)) %>%
layout(title = "Tendência do Número de Views - Marília Mendonça",
xaxis = list(title="Ano", showgrid = FALSE),
yaxis = list(title="Número de Views", showticklabels = FALSE),
showlegend = FALSE)
Temos agora o histórico de views da dupla Maiara e Maraisa, vemos que a tendência é positiva e que os seus maiores sucessos encontram-se a partir de 2015.
Agora temos as artistas que estão a mais tempo no cenário da música sertaneja. Iniciamos com Wanessa Camargo que está no YouTube desde 2008. Observando sua trajetória, vemos que sua média de views é positiva, mas com crescimento não muito grande. Temos alguns sucessos que se destacam sendo os outliers.
Encerrando as observações, temos o histórico da cantora Paula Fernandes. Se analisarmos o plot exibido antes, sobre o número geral de views das cantoras, ela é quem possui os maiores sucessos entre 2009 e 2011, porém com a ascenção das outras cantoras suas músicas tiveram uma queda com o decorrer do tempo. A tendência do número de visualizações em seu canal negativa.
Ainda analisando os dados da cantora Paula Fernandes, é interessante observar que a queda no número de views acontece em paralelo com o aumento do número de cantoras sertanejas. Uma das possíveis explicações é que o aparecimento das duplas sertanejas femininas, algo que não era visto antes, lembrando que essa não é apenas uma especulação para uma explicação para a tendência negativa dos seus vídeos.
De uma observação simples, o fato dos meus amigos estarem escutando músicas sertanejas cantadas por mulheres, cheguei a conclusão que realmente, não só meus amigos, mas a população no geral está consumindo músicas femininas. Essa conclusão é realmente algo muito bom, pois a mulher cada vez mais está conquistando seu espaço.
Não só a observação no conjunto geral das cantoras nos mostrou que essa tendência crescente no número de views existe realmente, foi também muito interessante ver o comportamento isolado de algumas cantoras, umas com o sucesso crescente e outras que se mantem firmes no mundo da música.
Além das conclusões sobre o tema, esse trabalho tem sua importância pois trabalhamos com duas APIs bastante famosas, aprendemos a acessar e analisar os dados do Spotify, do YouTube, trabalhamos com várias bibliotecas de manipulação de dados e de datas, modelos lineares e bibliotecas gráficas como plotly e streamgraph.