2
respostas

Erro ao usar API alternativa

Olá, boa noite pessoal, tudo bem?

Estou utilizando a API alternativa, porém estou recebendo o seguinte erro no retorno da API:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeVerifiquei o funcionamento da API usando o Insomnia para efetuar a requisição e obtive o seguinte retorno:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadePoderiam me ajudar com esse tema?

Segue abaixo o meu código:

import os
import json
import requests
from dotenv import load_dotenv
from datetime import datetime, timedelta

load_dotenv()

time_zone = datetime.now().astimezone().tzname()
TIMESTAMP_FORMAT = f"%Y-%m-%dT%H:%M:%S.00{time_zone}:00"

start_time = (datetime.now() + timedelta(-1)).date().strftime(TIMESTAMP_FORMAT)
end_time = datetime.now().strftime(TIMESTAMP_FORMAT)
query = "data science"

tweet_fields = "tweet.fields=author_id,conversation_id,created_at,id,in_reply_to_user_id,public_metrics, lang, text"
user_fields = "expansions=author_id&user.fields=id,name,username,created_at"

url_raw = f"https://labdados.com/2/tweets/search/recent?query={query}&{tweet_fields}&{user_fields}&start_time={start_time}&end_time={end_time}"
bearer_token = os.environ.get("BEARER_TOKEN")
headers = {"Authorization": "Bearer {}".format(bearer_token)}
response = requests.request("GET", url_raw, headers=headers)

json_response = response.json()

print(json.dumps(json_response, indent=4, sort_keys=True))
2 respostas

Oii, Vinicius! Tudo bem?

O que acontece é que essa API alternativa não precisa de autorização.

Isso significa que você pode remover a parte do código que lida com o token de autorização. O trecho de código que você deve modificar é o seguinte:

bearer_token = os.environ.get("BEARER_TOKEN")
headers = {"Authorization": "Bearer {}".format(bearer_token)}
response = requests.request("GET", url_raw, headers=headers)

Você pode simplificar isso para:

response = requests.get(url_raw)

Nesse caso, a função requests.get() faz uma requisição GET para a URL especificada, sem a necessidade de um token de autorização.

Se a dúvida persistir, estamos aqui.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá Maria Isabel,

Agradeço pela sua resposta, porém só essa alteração não foi o suficiente para resolver meu problema. Acabei verificando detalhadamente a URL que estava sendo gerada ao chamar a API e notei que estava com um erro no timezone:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeEstava seguindo a sugestão do "Para saber mais: representação de data e hora", porém esse método deve ter sido atualizado na ultima versão.

Então para corrigir o problema eu alterei o trecho

time_zone = datetime.now().astimezone().tzname()
TIMESTAMP_FORMAT = f"%Y-%m-%dT%H:%M:%S.00{time_zone}:00"

pelo trecho abaixo:

diff = int((datetime.now() - datetime.utcnow()).total_seconds() / 3600)
time_zone = "0" + str(abs(diff)) if abs(diff) < 10 else diff
time_zone = "-" + time_zone if diff < 0 else time_zone

TIMESTAMP_FORMAT = f"%Y-%m-%dT%H:%M:%S.00{time_zone}:00"

Creio não ser a melhor maneira de solucionar esse problema do deslocamento em relação ao UTC, estou procurando na documentação da LIB de como realizar isso de uma maneira otimizada.