Contagem de Tweets com Python

A API do Twitter é uma ferramenta (do próprio Twitter) que permite ao usuário ter acesso aos tweets produzidos em tempo real, esses tweets podem ser filtrados e analisados conforme o objetivo da pessoa que está utilizando a ferramenta. Neste artigo falaremos sobre contagem de tweets utilizando a API e a linguagem de programação Python.

Conta de Desenvolvedor

Mas antes de utilizar a API, é preciso checar se: 1. Você possui uma conta no Twitter; 2. Você possui perfil de desenvolvedor. Para ter esse perfil é necessário solicitar ao Twitter, solicite aqui caso não o tenha.

Após ter acesso ao seu perfil de desenvolvedor, um painel como este será apresentado:

Para utilizar a API é necessário criar um projeto e uma aplicação vinculada ao projeto. Após a criação do projeto, você terá suas chaves de autenticação. E uma tela como esta mostrará tais chaves:

Agora, guarde suas chaves de autenticação e vamos utilizar a API!

Conexão com a API

Como dito no título deste artigo, utilizaremos Python. Caso não possua Python instalado em sua máquina, existem duas opções comuns para utilizá-lo: 1. Baixar o Python no site oficial e instalar na sua máquina; 2. Caso não queira instalar o Python, também é possível utilizá-lo via Google Colab, basta ter uma conta Google para isso.

Certas bibliotecas precisam ser importadas via Python, são elas:

import requests # módulo que realiza requisições HTTP/HTTPS
 import json # módulo para manuseio de objetos json
 import datetime # módulo para manuseio de datas e horas

Na ordem que foi mostrado: Requests é um módulo que fazer requisições HTTP/HTTPS; Json é um módulo para manuseio de objetos no formato JSON; Datetime é um módulo para manuseio de datas e horas.

Agora, precisamos utilizar a chave de autenticação chamada de Bearer Token:

bearer_token = "XXXXXXXXXXXXXXXXXXXXXXXXXX"

Para utilizá-la na requisição é necessário criar um cabeçalho com a chave. Neste exemplo, implementamos uma função que cria o cabeçalho:

# gera o cabeçalho para a requisição com o bearer token
 def bearer_oauth(r):
    r.headers["Authorization"] = f"Bearer {bearer_token}"
    return r

Em seguida definir palavras-chave e a query para a requisição. Vale ressaltar que para contagem de tweets, utilizamos o endpoint da API chamado de Tweet Counts, para saber mais sobre ele acesse este link.

O endpoint Tweet Counts é utilizado dado esta URL:

url = "https://api.twitter.com/2/tweets/counts/recent"

Agora, um exemplo de palavras chave e query (consulta) para requisição:

# palavras-chave
 keywords = "vacina covid-19"
 # query 
 query_params = {
    'query': keywords
 }

Finalmente, faremos a requisição à API, e para isso implementamos uma função que realiza a requisição e retorna a resposta em formato JSON:

# conecta com o endpoint e retorna a reposta em formato JSON 
 def connect_to_endpoint(url, params):
      response = requests.get(url, auth=bearer_oauth, params=params)
      print("Status da requisição: ",response.status_code) 

      # caso ocorra algum erro, uma exceção é lançada
      if response.status_code != 200: 
        raise Exception(response.status_code, response.text)

      # retorna o resultado em formato JSON
      return response.json()

Agora, basta imprimir a resposta da requisição:

result = connect_to_endpoint(url, query_params)
 print(json.dumps(result, indent=4, sort_keys=True))

Com esses resultados temos a contagem de tweets por palavras-chave. Esses resultados podem ser analisados, até mesmo responder esta pergunta: quantos tweets foram produzidos, nas últimas 24 horas, sobre o Covid-19?

Conclusão

Espero que tenha gostado deste artigo, a API do Twitter permite ao usuário fazer muitas coisas interessantes como, por exemplo, análise dos dados presentes nos tweets acessados. Este artigo foi feito com base neste projeto que eu implementei para uma disciplina da faculdade.

É possível utilizar essa API por meio de diferentes tecnologias, Python foi apenas a tecnologia que achei mais confortável para isso.

Recomendo esse artigo, também relacionado a API do Twitter. Até a próxima!

16