Buscando Tweets com a API do Twitter

Criando sua Conta de Desenvolvedor

A API do Twitter é uma ferramenta fornecida pelo próprio Twitter e permite o acesso em tempo real ao que está sendo produzido (tuitado) pelos usuários da rede social. Para acessá-la será necessário, primeiro, que você possua uma conta de desenvolvedor, para obtê-la é preciso que você realize uma solicitação clique aqui para seguir para página de solicitação.

Depois de conseguir seu acesso ao Portal de Desenvolvedor, você será apresentado a um painel como o abaixo.
*Dashboard* Do Portal de Desenvolvedor

Agora para ser capaz de se conectar a um endpoint da API, você precisará criar um projeto e um App. Para isso, clique em Create New Project e depois preencha as informações necessárias para a criação do projeto e de um App dentro do projeto. Após preencher todo o formulário você será apresentado a uma tela com as chaves de autenticação da sua aplicação, essas são necessárias durante a conexão com a API.

Agora você tem todo o necessário para se conectar à API!

Conexão com a API

Para realizar a conexão com a API é possível utilizar diversas tecnologias distintas, mas usaremos Python juntamente com algumas de suas bibliotecas.

Primeiramente, sobre as bibliotecas que serão utilizadas, serão três: Python Requests, json e Python Decouple. A Python Requests será responsável por realizar as solicitações HTTP, a json ajudará a manipular as respostas obtidas para o formato .json e a biblioteca Python Decouple será usada para separar a autenticação do que está escrito no código.

Então, primeiramente, importaremos as bibliotecas necessárias.

from decouple import config
import requests
import json

Depois disso, é necessário que importemos o valor de autenticação para o código, para isso, criaremos, no mesmo diretório do nosso arquivo, um arquivo com o nome .env e dentro dele adicionaremos a seguinte informação.

BEARERTOKEN=ValorDoSeuBearerToken

Após a criação do arquivo, já é possível utilizar o valor de autenticação do Bearer Token sem precisar colocar uma informação sigilosa junto ao código. Para isso, adicionaremos a seguinte linha de código no nosso arquivo .py.

bearer_token = config('BEARERTOKEN')

Dentro da variável bearer_token agora estará o valor de seu Bearer Token.

Agora, criaremos uma função que adiciona a autenticação no cabeçalho da solicitação HTTP que será realizada.

def set_autenticacao(objeto_para_auth):
    """
    Método que acrescenta, no objeto da busca, um cabeçalho correspondente a autenticação do request.
    """

    objeto_para_auth.headers["Authorization"] = f"Bearer {bearer_token}"
    return objeto_para_auth

Após isso, já somos capazes de realizar o processo de solicitação para a API. Então, determinaremos os nossos parâmetros de busca e o endpoint da API que será utilizado.

search_url = "https://api.twitter.com/2/tweets/search/recent"
str_busca = f'to:{perfil} {chave_busca} lang:{lingua}'
query_params = {'query': str_aux,'tweet.fields': 'attachments,author_id,created_at,lang,public_metrics,source','max_results':limite_tweets}

No código superior, a variável search_url recebe o endpoint que será usado (você pode ler um pouco mais sobre os endpoints disponíveis clicando aqui). Ademais, a variável str_busca recebe a string de busca que será aplicada, no caso do exemplo a busca será por tweets enviados para um perfil, contendo uma chave de busca e escritos em uma língua específica, outros filtros de busca podem ser vistos aqui. Já o query-params, recebe a string de busca, os campos que estarão presentes nas respostas (veja mais opções clicando aqui) e o número de tweets retornados na busca.

Depois das definições, podemos realizar o request, para isso, usaremos os comandos abaixo.

"""
Abaixo realizamos o request que usa os parâmetros
search url para defnir o endpoint,
auth para determinar o nosso bearer token como autenticação baseado na função anterior
params que usa a string de parâmetros
"""
response = requests.get(search_url, auth=set_autenticacao, params=query_params)

# Testa se a resposta foi bem sucedida
if response.status_code != 200:
    raise Exception(response.status_code, response.text)

# Converte a resposta para json
r = response.json()

# Imprime a resposta
print(json.dumps(r, indent=4, sort_keys=True))

Agora você pode ver seu os tweets obtidos baseados na sua busca!

O programa desenvolvido nesse tutorial está disponível no meu repositório do gitlab.

17