Analisando o canal do youtube Estatística é com R !

Neste tutorial serão usados os seguintes pacotes:

  • tuber: Para coletar os dados do Youtube, este será o foco desse tutorial;
  • dplyr: Usado na manipulação dos dados obtidos, para melhor entendimento desse pacote recomendamos https://www.youtube.com/watch?v=jTQkMHYxwew
  • lubridate: Trabalhar com data;
  • ggplot2: Visualização dos dados

Criando sua chave API e um OAuth Key.

O primeiro passo será criar uma conta no Google Cloud (https://cloud.google.com). Após criar sua conta, siga o passo a passo desse video https://www.youtube.com/watch?v=pP4zvduVAqo e em seguida crie sua OAuth Key

Autenticando sua chaves

Depois de obtida as chaves, devemos autenticar o pc/notebook que esta sendo utilizado. Para isso, utilizaremos a função yt_oauth().

app_id <- "ID_cliente"
app_secret <- "Chave secreta do cliente"
yt_oauth(app_id, app_secret, token='')

Deverá aparecer uma página pedindo para fazer login com sua conta Gmail e, se tudo der certo, aparecerá a seguinte:

menssagem Authentication complete. Please close this page and return to R.

Obtendo os dados

A partir de agora esses dados estão disponíveis para acesso e manipulação, e esse post focará em algumas funções capazes de acessar esses dados disponiveis.

get_stats

infos <- get_stats(video_id = smartcities$video_id[2])
## Error in get_stats(video_id = smartcities$video_id[2]): Must specify a video ID.

Aqui temos que tomar muito cuidado!!!!!!

class(smartcities$video_id[2])
## [1] "factor"

Todas os resultados em smartcities são factor, então faça as devidas alterações seja, transformando em character ou numeric.

id <- as.character(smartcities$video_id[2])
infos <- get_stats(video_id = id)
class(infos)
## [1] "list"

Obtendo estatísticas e fazendo análise descritiva de um canal

Agora será construído um script capaz de pegar todas as informações básicas de um video (número de vizualizações, likes, e dislikes, quando foi feito o upload). Como exemplo, será usado o canal Estatística é com R https://www.youtube.com/channel/UCmbNWlpq8o3dpqY6c9HDGXg .

1º passo: Obter todas as infos do canal.

canal <- yt_search(term = "", 
          type = "video",
          channel_id = 'UCmbNWlpq8o3dpqY6c9HDGXg')

Para achar channel_id, basta ir na pagina do mesmo e pegar tudo que vem após de /channel/…., nesse caso foi UCmbNWlpq8o3dpqY6c9HDGXg

2º passo: Coletar o id, salvo no objeto id.

id <- NULL
for (i in canal$video_id){
  id <- c(id,i)
}

3º passo: Extração

nrow <- dim(canal)[1] # Vendo quantos videos tem em um canal
ncol <- length(get_stats(video_id=id[1])) # Vendo quantas informações são fornecidas

# Criando um matriz para armazenar as estatisticas que no momento não tem nada 
estatisticas <- matrix(1:ncol,ncol=ncol,nrow=nrow)

# Para cada video estou armazenado as estisticas com a funcao get_stats()
for (j in 1:nrow){
  infos <- unlist(get_stats(video_id=id[j]))
  estatisticas[j,] <- infos
}

# Transforamndo de matriz para data frame
estatisticas <- as.data.frame(estatisticas)

# Colocando nome nas colunas
nome <- names(unlist(get_stats(video_id=id[1])))
colnames(estatisticas) <- nome

# Juntando a base estatistica com canal
estatisticas <- merge(estatisticas, canal,  by.y="video_id", by.x="id") 

# Selecionando somente as colunas estatisticas,title e  viewCount ate publishedAt
estatisticas <- select(estatisticas,title, viewCount:publishedAt)

# Manipulando as datas
estatisticas$publishedAt <- as_date(estatisticas$publishedAt)

4º passo (opicional): Exportar para csv ou qualquer outra extensão

write.csv2(estatisticas,"youtubeR.csv")

Apesar desse passo ser opcional, aconselha-se fazê-lo

Usando ggplot2

Gráfico 1

base <- estatisticas
base$viewCount <- as.numeric(as.character(estatisticas$viewCount))
base$title <- as.character(estatisticas$title)

base <- arrange(base, viewCount)
fig1 <- ggplot(base,aes(x=reorder(title,viewCount),y=viewCount))+
  geom_bar(stat="identity") +
  coord_flip()+
  labs(y = "Número de visualizações", x = "Nome do video")
fig1 

Gráfico 2

##Diferença de dias
hoje <- today("GMT")
base$diferenca <- hoje-base$publishedAt
base$diferenca <- as.numeric(base$diferenca)
base <- select(base,title,viewCount,views_por_dias,diferenca,everything())

#Views por dias
base$views_por_dias <- base$viewCount/base$diferenca
base <- arrange(base, views_por_dias)
fig2 <- ggplot(base,aes(x=reorder(title,views_por_dias),y=views_por_dias))+
  geom_bar(stat="identity") +
  coord_flip()+
  labs(y = "Número de visualizações por dia", x = "Nome do video")
fig2

Problemas http

As vezes pode ocorrer um erro ao utilizar a função yt_search() (error http 401), caso isto aconteça vá na pasta em que seu script esta salvo e delete os seguintes arquivos: .gitignore e .httr-oauth

Outro possível erro é o error http 403, nesse caso não há muito o que ser feito. Como esse é um serviço 0800 o próprio Google limita o número de acessos, mas fique calmo que depois de 24:00 do horario pacifico (pacific time) o próprio libera novamente o acesso.

Autoria: Gabriel Mizuno e Luciane Alcoforado

Comments

comments

Esta entrada foi publicada em Uncategorized. Adicione o link permanente aos seus favoritos.

Deixe uma resposta