EXTRAINDO DADOS DO YOUTUBE | API | PYTHON

CRIANDO UM SCRIPT ÁGIL E AUTOMATIZADO PARA COLETA.

Por Hyan Dias Tavares • Out 24, 2022

YOUTUBE

EXTRAÇÃO

API

DADOS

O surgimento de uma era

O YouTube é uma plataforma de streaming que permite a criação e consumo de conteúdos em vídeos. Diferente de uma Netflix, os próprios usuários criam os conteúdos, e os mesmos são monetizados conforme o consumo de seus vídeos.

Criada em 2005 por Chad Hurley, Jawed Karin e Steve Chen, que por curiosidade também eram fundadores do Paypal. Tinham a ideia de criar uma ferramenta que fosse fácil de compartilhar os vídeos, já que os e-mails (ferramenta usada na época) eram complicados, pois havia um limite de tamanho do envio do vídeo, para assistir tinha que fazer o download (sua internet tinha que ser boa) e era complexo a distribuição (os e-mails iam para caixa de spam).

Não precisa dizer que o YouTube cresceu rapidamente, chamando a atenção de grandes marcas, até o Google comprar a plataforma por US$ 1,65 bilhões.

Hoje o YouTube conta com 2,56 bilhões de usuários ativos, o serviço é responsável por 20,4% do tráfego mundial de internet móvel, segundo a pesquisa da The Mobile Internet Phenomena Report, realizada pela Sandvine.

Vale lembrar que o mercado de streaming, é uma oportunidade a ser explorada pelos times de marketing, sendo que em 2020 movimentou US$ 67 bilhões e se prevê que o mercado global poderá ultrapassar US$ 126 bilhões em receita até 2026.

E por todos esses fatores é fundamental investir em técnicas para automatizar a coleta de dados dessa ferramenta, para que possa gerar inteligência de mercado e estratégica.

Coleta manual

O próprio YouTube disponibiliza uma área (dashboard) para observar as principais métricas e desempenho do seu canal. Basta acessar sua conta e ir ao “YouTube Studio”. Essa opção você encontra clicando no ícone (logo) do seu canal no canto superior direito.

Após isso, acesse o campo “Estatística”, você já encontrará alguns dados do seu canal, configurado para os últimos 30 dias. Para explorar o máximo desses dados, clique na opção “Modo avançado”.

Irá abrir uma nova janela, na qual terá as tabelas de dados para vários tipos de filtros, como origem do tráfego, cidades, idade, gênero, playlist e vários outros. Isso ajuda muito a entender o perfil do seu público. 

Uma forma simples de extrair os dados é selecionar seu filtro e clicar no link de download,  no caso, você pode escolher exportar para planilhas do Google ou um arquivo .csv.

Vale frisar que esse tipo de extração acontece em uma única viagem (clique), formando uma única fonte, ou seja, não é possível medir os dados em real time, necessitando toda vida que você clique para extrair os dados atualizados.

Porque automatizar a extração de dados

Para responder essa pergunta devemos entender se o seu canal é uma ferramenta de atração ou engajamento do seu público alvo dentro do seu funil de marketing, pois se a resposta for NÃO, minha sugestão não é automatizar essa tarefa, já que dará trabalho e seus dados serão ineficazes para conectar as ações de campanhas. Acredito que o próprio dashboard do YouTube irá te suprir bem para esta necessidade específica. 

Se você faz campanhas de marketing ou conecta alguma ação de vendas e customer experience (CX) aos vídeos que você produz no YouTube. Essa automatização é importante para você.

Imagine você ter que medir o desempenho de múltiplas campanhas.

Exemplo: você usa seus vídeos no YouTube como topo de funil, para atrair novos clientes, impulsionando via google ads, além de engajar os próprios seguidores atuais em canais como Facebook e LinkedIn. E ao final do vídeo ainda tem call to action que irá te levar para uma página de captura de lead, que será uma fonte de dados para o CRM da sua empresa, para enfim você medir o volume de vendas.

Como você irá medir qual das campanhas realmente foi a mais eficiente? Qual vídeo converteu mais? Será que o vídeo que converteu menos, não foi o que trouxe mais vendas? E muitas outras perguntas. E não é lógico você ficar extraindo dados em planilhas toda vez ou deixar para terminar a campanha para ver qual foi o melhor. Você estará perdendo dinheiro. 

E isso foi o que me motivou a escrever esse artigo, quero mostrar como extrair os dados do YouTube utilizando a sua API. Usaremos algumas técnicas com Python, mas prometo que será bem simples de executar, é só seguir o passo a passo.

Documentação

O próprio YouTube desenvolveu a API, na qual permite a incorporação de funções executadas no próprio site do YouTube, possibilitando extrair dados.

Para você que não sabe direito o que é uma API (Application Programming Interface), é uma interface que possibilita a comunicação (troca de informação) por uma série de padrões e protocolos. Isso nos permite desenvolver nossos próprios softwares e aplicativos que podem se conectar a outra ferramenta.

Um exemplo é o Instagram, quando você posta um story e vai adicionar o restaurante onde você está, utilizando o arroba da localização, já aparece a opção da sua atual localização, pois ela se conectou com a API do Google Map ou algo similar e puxou os dados, para agilizar sua transcrição.

Para seguirmos com o tema, vou deixar aqui a Documentação da API do Youtube, sugiro você ler e conhecer um pouco, pois irei tratar neste artigo de uma forma  sucinta, se quiser se aprofundar, buscar extrair alguma feature diferente, todas as respostas vão estar na documentação.

O primeiro fato a se entender é que existem duas formas de se credenciar na API, para que o YouTube nos forneça o acesso.

  • OAuth 2.0: um protocolo de autorização que permite que uma aplicação se autentique em outra, tornando muito segura.
  • Chave de API: é um código que identifica o aplicativo ou o projeto que está fazendo uma chamada para a API. E é esse que iremos usar

Credenciamento no Google API

Para ambas as opções de credenciamento é necessário acessar a plataforma do Google API. Se você não tem cadastro ainda, sugiro entrar e criar sua conta. 

Talvez você necessite aumentar sua cota de projetos no Google API. Para isso é só entrar no formulário e responder honestamente todas as informações, dentro de 1 semana, vão te retornar com um parecer.

O primeiro passo é ativar a API do YouTube Data API v3. Você pode acessar o link ou fazer uma busca, no próprio buscador da Google API.

Após ativar, você irá clicar no menu da esquerda, passar o mouse sobre a opção “APIs e serviços” e selecionar a opção “Credenciais”.

OBS: Se você entrar e não estiver aparecendo nada, pode ser que você precise criar um “novo projeto”. É só clicar em “criar um projeto”, dar um nome, selecionar a organização (caso tenha) e “criar”. Logo em seguida já estará liberado todas as funções.

Agora você está na página de credenciais, clique na opção “+CRIAR CREDENCIAIS”, e selecione a “chave de API”. Em alguns instantes ele vai criar para você a chave, mas se atente, você precisará configurá-lo, para isso é só clicar em “Edit API key”.

Você irá configurar sua chave. Se quiser, mude o nome da chave, isso serve apenas para sua própria organização. Na opção “Restrição de aplicativo” deixe a opção “Nenhum” ativada.

Na opção “Restrições da API”, você irá marcar a alternativa “restringir chave”, ao fazer isso, irá surgir uma caixa de seleção. Escolha a opção “YouTube Data API v3” e dê um “ok”. E por último clique em salvar.

Após finalizar a etapa anterior, você vai ser jogado para a tela de credenciais. Clique em “Exibir Chave”. Irá aparecer um código alfanumérico,  salve isso, pois será importante para outro momento. Vale ressaltar que essa chave você não pode compartilhar com ninguém.

Primeiros passos

Iremos fazer essa aplicação funcionar dentro do google colab, sendo uma ferramenta que utiliza Python. E o primeiro passo é importar as bibliotecas necessárias.

In [1]:

from IPython.display import YouTubeVideo

import pandas as pd

import numpy as np

Vamos ter que instalar o google-api-python-client, sendo um módulo das APIs do Google em Python cliente, que nos permite fazer essa consulta.

In [2]:

!pip install --upgrade google-api-python-client

E em seguida adicionar a biblioteca “build”.

In [3]:

from googleapiclient.discovery import build

Esse é o momento que iremos utilizar aquela chave de credencial no Google API.

In [4]:

youTubeApiKey = "XXXXXXXXXXXXXXXXXXXXXXX"

E para permitir fazer as consultas, usamos a função “build”, que exige as variáveis de qual ferramenta irá extrair (no caso, YouTube), a sua versão (v3) e por último a chave da API.

In [5]:

youtube = build('youtube','v3', developerKey=youTubeApiKey)

A Partir desse momento já estamos autorizados para fazer a extração de dados.

Extraindo os dados

Como estudo de caso, vamos tentar extrair os dados de uma playlist específica do meu canal, ou seja, todos os vídeos que estão dentro desta playlist.

Para solicitar os dados da playlist, precisamos do identificador da playlist, ele é bem fácil de encontrar. Basta acessar a playlist que você deseja, você vai encontrar ela na URL, e vai estar dentro do parâmetro chamado list=, tudo após esse igual é o identificador da playlist.

Os próximos passo são criar as variáveis com o ID da playlist, o nome da playlist e o nextPage_token.

In [6]:

playlistId = 'PLEkHCyHg-ngCUab9CPAsx3HrR3QRx9m-S'

playlistName = 'Tracker Talk'

nextPage_token = None

Para extrair os dados dos vídeos na playlist, criamos uma lista utilizando um  laço de repetição (while), ou seja, irá ficar reproduzindo o comando até não haver mais vídeos para ser extraído os dados.

E para fazer isso acontecer, chamamos aquele objeto criado lá em cima “YouTube” e passamos a função playlistItem (você pode entender ela melhor na documentação) e a list, na qual irá listar os recursos da playlist. E para isso será necessário passar os parâmetros:

  • part: vamos usar o atributo snippet, pois irá puxar todas as propriedades
  • playlistId: o id da playlist que coletamos
  • maxResults: o máximo de resultados, no nosso exemplo iremos colocar 50 videos.
  • pageToken: usaremos essa artimanha o nextPage_token (None), pois se a nossa playlist tiver mais de 50 vídeos, ele não irá puxar os dados. É por este fator que criamos um laço de repetição, que toda vez que encontrar o resultado irá atribuir à variável playlist, sendo necessário atualizar a variável nextpage_Token com a informação retornada da playlist e se esse token, que foi retornado pela consulta, for vazio, o laço de repetição irá parar.

In [7]:

playlist_videos = []




while True:

  res = youtube.playlistItems().list(part='snippet', playlistId = playlistId, maxResults=50, pageToken=nextPage_token).execute()

  playlist_videos += res['items']

  

  nextPage_token = res.get('nestPageToken')




  if nextPage_token is None:

    break

Sei que foi complexa essa parte, mas fica tranquilo, é só seguir o fluxo que você irá conseguir. E para ver o resultado de todos os dados é só digitar a variável playlist_videos.

In [8]:

playlist_videos

A consulta nos retorna um json, e os dados que queremos estão dentro da chave itens. Outra função que podemos fazer é ver quantos vídeos tem na playlist.

In [9]:

print("Número total de vídeos na Playlist ", len(playlist_videos))

Out [9]:

Número total de vídeos na Playlist  30

Outra ação importante é coletar os ID de cada vídeo que está na playlist, que está dentro daquele json que nos retornou. Então vamos criar uma função lambda que irá filtrar as variáveis e armazená-la dentro de uma lista.

In [10]:

videos_ids = list(map(lambda x: x['snippet']['resourceId']['videoId'], playlist_videos))

Digite a variável videos_ids, que irá retornar uma lista com todos os IDs.

In [11]:

videos_ids

Out [11]:

[‘ghOkow0MXnA’,

 ‘JU3cmPFFBcw’,

 ‘MrVcJPPeYJw’,

 ‘Mnf2Pcxn5xc’,

 ’54Fx9kG7vhQ’,

 ‘PS2vhqYG6wQ’,

 ‘nQZdR0aO3Gw’,

 ‘GqNdJXS446U’,

 ‘GpBcZ6jhPX8’,

 ‘yTwaueEopwo’,

 ‘c7gmTJWdmOo’,

 ‘3yR_Wuy8zZ0’,

 ‘0-6-0eflIZM’,

 ‘mER2vptlKe0’,

 ‘S0ZpA_ONE4c’,

 ‘uyzeaeW7XSM’,

 ‘utBcmaoiwW0’,

 ‘Job_jrkbMHQ’,

 ‘w2dGPRmjpIs’,

 ‘x0AQ32yyrR0’,

 ‘Ok_lJ48T9Ic’,

 ‘PFusDt3GyD8’,

 ‘ljNqIeBdONg’,

 ‘OLVdraY-6c8’,

 ‘fnEJ_JjD1BQ’,

 ‘cdrav5KntYM’,

 ‘Z0SIZ1bBqVs’,

 ‘Ygzjmd6ckHc’,

 ‘jZ-FDOBgf1k’,

 ‘QT_5T7ZeU_I’]

Vou usar essa lista de IDs para fazer uma consulta de endpoint de vídeos da nossa API. Para isso vamos criar uma nova lista chamada stats, na qual ficará armazenado as informações.

Para criar a lista, vamos usar o laço de repetição, que para cada consulta iremos extrair os dados estatísticos dos vídeos.

In [12]:

stats = []




for video_id in videos_ids:

  res = youtube.videos().list(part='statistics', id=video_id).execute()

  stats += res['items']

Se rodar a variável stats vamos gerar uma nova lista json, que irá conter informações com os dados sobre o número de visualizações, likes, favoritos e comentários.

In [13]:

stats

Já chegamos a um ponto ótimo, mas para fazer uma análise de dados profunda, não é interessante para mim, os dados estarem nessa estrutura. E é por isso que iremos transformá-lo em um dataframe, sendo mais performático.

Nos usaremos o mesmo recurso anterior, a função lambda, mas neste caso queremos extrair os dados de título da playlist, URL, data de publicação do vídeo, descrição, ID do vídeo, número de likes, comentários e visualizações.

In [14]:

videos_title = list(map(lambda x: x['snippet']['title'], playlist_videos))

url_thumbnails = list(map(lambda x: x['snippet']['thumbnails']['high']['url'], playlist_videos))

published_date = list(map(lambda x: str(x['snippet']['publishedAt']), playlist_videos))

video_description = list(map(lambda x: x['snippet']['description'], playlist_videos))

videoid = list(map(lambda x: x['snippet']['resourceId']['videoId'], playlist_videos))

liked = list(map(lambda x: int(x['statistics']['likeCount']), stats))

views = list(map(lambda x: int(x['statistics']['viewCount']), stats))

comment = list(map(lambda x: int(x['statistics']['commentCount']), stats))

Não podemos esquecer da informação de quando esses dados foram extraídos, para saber se estão atualizados. Vamos usar uma biblioteca chamada datatime.

In [15]:

from datetime import datetime 

extraction_date = [str(datetime.now())]*len(videos_ids)

Já temos todas as informações para criar o dataframe, iremos utilizar um dicionário com uma chave para cada lista criada.

In [16]:

playlist_df = pd.DataFrame({'title':videos_title,
      'video_id':videoid,
      'video_description':video_description,
      'published_date':published_date,
      'extraction_date':extraction_date,
      'likes':liked,
      'views':views,
      'comment':comment,
      'thumbnail': url_thumbnails})
playlist_df.head()

Out [16]:

titlevideo_idvideo_descriptionpublished_date extraction_datelikesviewscommentthumbnail
0Tracker Talk - CORONAVÍRUS e porque Comunidade... ghOkow0MXnAUm bate papo aberto entre dois líderes de noss...2020-04-01T17:54:47Z2022-10-19 12:24:31.847419 0670https://i.ytimg.com/vi/ghOkow0MXnA/hqdefault.jpg
1Tracker Talk - Como a LGPD impacta a Análise d... JU3cmPFFBcw Um bate papo com os mentores da LabTrack espec... 2020-04-08T01:13:33Z 2022-10-19 12:24:31.847419 51000https://i.ytimg.com/vi/JU3cmPFFBcw/hqdefault.jpg
2Tracker Talk - A cultura DevOps como oportunid... MrVcJPPeYJwUm bate papo com o Jefferson Machado, analista... 2020-04-08T01:13:56Z2022-10-19 12:24:31.847419 9920https://i.ytimg.com/vi/MrVcJPPeYJw/hqdefault.jpg
3Tracker Talk - Vendas na quarentena, o que fazer? Mnf2Pcxn5xc Um bate papo com o mentor da LabTrack Fernando... 2020-04-15T01:20:06Z 2022-10-19 12:24:31.847419 1340https://i.ytimg.com/vi/Mnf2Pcxn5xc/hqdefault.jpg
4Tracker Talk - A importância do Design no dese... 54Fx9kG7vhQUm bate papo com os mentores da LabTrack, Gari...2020-04-16T01:32:56Z2022-10-19 12:24:31.847419 81070https://i.ytimg.com/vi/54Fx9kG7vhQ/hqdefault.jpg

A partir desse momento é fazer um tratamento e análise de dados, técnica que você poderá ver em outros artigos como Explorando dados do Airbnb, e assim encontrar padrões e gerar inteligência de mercado.

Resumo final

Pode parecer um pouco complexo, mas após criado a aplicação é só automatizar, e os dados já irão sair prontos. Claro que você pode puxar nesse momento dados de outros dataframes ou jogar para uma ferramenta de BI. Vai da sua estratégia de análise.

Volto a invocar aqui a sua reflexão ao estudo da documentação da API do YouTube, pois ainda há muitos outros dados e recursos a serem extraídos.

Arquivo Completo no Github

Oi, sou Hyan e aqui você vai encontrar tudo sobre marketing e tecnologia, assuntos esses na qual eu me dedico a aprender e me desafiar todas as manhãs.

CATEGORIAS

YouTube • Marketing • API • Analise • DataMarketing • Dados • Google • Extração • Automatização • Playlist • Python 

CRÉDITOS

Produção: Zero.ai

Texto: Hyan Dias Tavares

Ilustração: Hyan Dias Tavares

Inspiração: Programação Dinâmica

NEWSLATTER