Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não consigo fazer a extração com a API nova [2]

Olá, pessoal. Estou com o mesmo erro do colega Luca, que publicou há 5 dias. Inclusive, ao realizar um print da variável response, recebo um status 500, o que me leva a crer que há um problema onde estão os dados. Alguma ajuda? Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá Murillo, tudo bem? Espero que sim.

Desculpe pela demora na resposta.

Analisando a parte do código que você disponibilizou, parece que está tudo certo.

Para que eu possa te ajudar melhor, poderia me enviar o código completo? Assim, terei uma visão mais abrangente do problema e poderei oferecer uma solução mais precisa.

Também respondi ao Luca sobre a formatação do end_time. Se você quiser, pode conferir a sugestão que deixei para o Luca no link do tópico e ver se ela também pode ajudar no seu caso.

Parabéns pela ideia de utilizar o print na resposta para tentar identificar o erro. Uma sugestão adicional é adicionar um print da URL para testá-la fora do código e verificar se os parâmetros estão corretos.

Aguardo o envio do código completo e fico à disposição para esclarecer qualquer dúvida.

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

Oi, Igor! Tudo e você? Obrigado pelo retorno, segue print. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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

TIMESTAMP_FORMAT = "%Y-%m-%d%H:%M:%S.00Z" #formatando data aceita pela API
end_time = datetime.now().strftime(TIMESTAMP_FORMAT)
start_time = (datetime.now() + timedelta(-1)).date().strftime(TIMESTAMP_FORMAT)
query = "data science" #palavra de interesse que queremos buscar nos tweets

#Campos que desejamos da API
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
url_raw = f"https://labdados.com/2/tweets/search/recent?query={query}&{tweet_fields}&{user_fields}&start_time={start_time}&end_time={end_time}"

#Acessando token na variável de ambiente
#Primeiro, abro um novo terminal no VSCOde e, digito: export BEARER_TOKEN={token}
bearer_token = os.environ.get("BEARER_TOKEN")
headers ={"Authorization": "Bearer {}".format(bearer_token)}
response = requests.request("GET", url_raw, headers=headers)

#Acessando o conteúdo
json_response = response.json()

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

#Iterando para acessar mais páginas da requisição
while "next_token" in json_response.get("meta", {}):
    next_token = json_response['meta']['next_token']
    url = f"{url_raw}&next_token={next_token}"
    response = requests.request("GET", url, headers=headers)
    json_response = response.json()
    print(json.dumps(json_response, indent=4, sort_keys=True))
solução!

Olá Murillo.

Notei que no timestamp está faltando a letra T separando a data da hora.

TIMESTAMP_FORMAT = "%Y-%m-%d%H:%M:%S.00Z" #formatando data aceita pela API

Poderia modificar para esse código:

TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%S.00Z"

Aguardo para saber se a alteração funcionou e fico à disposição para esclarecer qualquer dúvida.

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

Oi, Igor!

Obrigado pela resolução.