Estou tendo um problema para tratar o código de erro 400. Alguém pode me ajudar com isso? a ideia eh que quando encontre esse erro ele pule o post enao que fique tentando novamente varias vezes
import tweepy
import time
import random
from datetime import datetime
import chavesDeAcesso
from criadores.criadores import obter_lista_tweets
api = chavesDeAcesso.antigo
idTwitter = 'Antigo'
# --Crie uma cópia da lista de tweets para não modificar a original
tweets_disponiveis = obter_lista_tweets()
tErro = 60
while True:
# --Verifique se todos os tweets foram publicados
if not tweets_disponiveis:
# --Se todos foram publicados, faça uma nova cópia da lista original
tweets_disponiveis = obter_lista_tweets()
# --Escolha o próximo tweet da lista
# --Remove e retorna o primeiro tweet da lista
tweet = tweets_disponiveis.pop(0)
try:
# --Obter a hora atual do sistema
hora_atual = datetime.now().time()
# --Obter intervalo para postagem
intervalo = 60 * random.randint(20, 40)
print(f".........................Tentando publicar.......................\n\n.................................twitter {idTwitter}.................................\n", tweet)
# --Faz o tweet
api.create_tweet(text=tweet)
print(f"\n.........................Tweet Publicado as {hora_atual}.....................\n")
# --Faz a troca da chave de acesso do twitter
if api == chavesDeAcesso.novo:
api = chavesDeAcesso.antigo
idTwitter = 'Antigo'
else:
api = chavesDeAcesso.novo
idTwitter = 'Novo'
print(f"Intervalo até próxima postagem é de {int(intervalo / 60)} min")
time.sleep(intervalo)
except tweepy.TooManyRequests as e:
if api == chavesDeAcesso.novo:
api = chavesDeAcesso.antigo
idTwitter = 'Antigo'
else:
api = chavesDeAcesso.novo
idTwitter = 'Novo'
error_code = e.response.status_code
error_message = e.response.text
print(f"\nCódigo de erro HTTP: {error_code}")
print(f"Mensagem de erro: {error_message}")
print('----------------------------------------------------------------------------------------------\n')
if error_code == 400:
print("Erro 400: Solicitação inválida.")
print(tweet)
time.sleep(tErro)
else:
time.sleep(tErro)
tweets_disponiveis.insert(0, tweet) # Volta o tweet para a lista
except tweepy.errors.TweepyException as e:
if "Connection aborted" in str(e):
print("Conexão abortada. Tentando reconectar...")
print('----------------------------------------------------------------------------------------------\n')
time.sleep(tErro)
continue # Reinicia o loop após a reconexão
elif e.response is not None:
error_code = e.response.status_code
error_message = e.response.text
print(f"\nCódigo de erro HTTP: {error_code}")
print(f"Mensagem de erro: {error_message}")
print('----------------------------------------------------------------------------------------------\n')
else:
print("\nErro desconhecido")
time.sleep(tErro)
tweets_disponiveis.insert(0, tweet) # Volta o tweet para a lista
except ConnectionError as ce:
print(f"\nErro de conexão: {str(ce)}")
print('----------------------------------------------------------------------------------------------\n')
time.sleep(tErro)
tweets_disponiveis.insert(0, tweet) # Volta o tweet para a lista
except (ConnectionError, tweepy.TweepyException) as ce:
print(f"\nErro de conexão: {str(ce)}")
print('----------------------------------------------------------------------------------------------\n')
time.sleep(tErro)
tweets_disponiveis.insert(0, tweet) # Volta o tweet para a lista
except Exception as e:
print(f"\nOcorreu um erro inesperado: {str(e)}\n")
print('----------------------------------------------------------------------------------------------\n')
time.sleep(tErro)
tweets_disponiveis.insert(0, tweet) # Volta o tweet para a lista