This commit is contained in:
daniel.rodrigues 2025-10-31 14:51:43 -03:00
parent 3aaf089d8e
commit db682de691

View File

@ -6,7 +6,6 @@ import re
import json
from datetime import datetime
import pyodbc
import time
@ -14,10 +13,6 @@ hoje_coluna = datetime.today() # Pegando a Data e Hora de hoje
hoje_formatado = hoje_coluna.strftime('%Y-%m-%d')
data_atual = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Constantes de tempo em segundos
TEMPO_ESPERA_SUCESSO = 45 * 60 # 45 minutos
TEMPO_ESPERA_ERRO = 3 * 60 # 3 minutos
def generate_code_verifier():
"""Gera um code_verifier aleatório."""
return base64.urlsafe_b64encode(os.urandom(32)).decode('utf-8').rstrip("=")
@ -233,71 +228,58 @@ def insert_token_to_db(token):
except Exception as e:
print(f"Erro ao inserir token no banco de dados: {e}")
def main_loop():
def main():
"""
Função principal que executa em loop, controlando os tempos de espera
Função principal que executa uma única vez
"""
while True:
try:
print(f"\n[{datetime.now()}] Iniciando processo de obtenção do token...")
session = requests.Session()
code_verifier = generate_code_verifier()
code_challenge = generate_code_challenge(code_verifier)
# Enviar requisição GET para obter tokens
html_content = send_authorization_request(session, code_challenge)
csrf_token, state_properties = extract_tokens(html_content)
try:
print(f"\n[{datetime.now()}] Iniciando processo de obtenção do token...")
if not csrf_token or not state_properties:
print(f"[{datetime.now()}] Falha ao extrair CSRF Token ou StateProperties.")
print(f"Aguardando {TEMPO_ESPERA_ERRO/60} minutos antes de tentar novamente...")
time.sleep(TEMPO_ESPERA_ERRO)
continue
session = requests.Session()
code_verifier = generate_code_verifier()
code_challenge = generate_code_challenge(code_verifier)
# Dados de login
username = "daniel.rodrigue"
password = "Iphone2513@"
# Enviar requisição GET para obter tokens
html_content = send_authorization_request(session, code_challenge)
csrf_token, state_properties = extract_tokens(html_content)
# Enviar requisição POST para login
login_response = send_login_request(session, csrf_token, state_properties, username, password)
if not csrf_token or not state_properties:
print(f"[{datetime.now()}] Falha ao extrair CSRF Token ou StateProperties.")
return
if not login_response:
print(f"[{datetime.now()}] Falha no login.")
print(f"Aguardando {TEMPO_ESPERA_ERRO/60} minutos antes de tentar novamente...")
time.sleep(TEMPO_ESPERA_ERRO)
continue
# Dados de login
username = "daniel.rodrigue"
password = "Iphone2513@"
# Enviar requisição final
final_page_html = send_final_request(session, csrf_token, state_properties)
code = extract_code_from_html(final_page_html)
if not code:
print(f"[{datetime.now()}] Falha ao extrair código.")
print(f"Aguardando {TEMPO_ESPERA_ERRO/60} minutos antes de tentar novamente...")
time.sleep(TEMPO_ESPERA_ERRO)
continue
# Enviar requisição POST para login
login_response = send_login_request(session, csrf_token, state_properties, username, password)
token = send_token_request(code, code_verifier)
tokens = extract_tokens_2(token)
if tokens:
access_token = tokens["access_token"]
insert_token_to_db(access_token)
print(f"[{datetime.now()}] Token obtido e salvo com sucesso!")
print(f"Aguardando {TEMPO_ESPERA_SUCESSO/60} minutos antes da próxima atualização...")
time.sleep(TEMPO_ESPERA_SUCESSO)
else:
print(f"[{datetime.now()}] Falha ao processar tokens.")
print(f"Aguardando {TEMPO_ESPERA_ERRO/60} minutos antes de tentar novamente...")
time.sleep(TEMPO_ESPERA_ERRO)
if not login_response:
print(f"[{datetime.now()}] Falha no login.")
return
except Exception as e:
print(f"[{datetime.now()}] Erro inesperado: {str(e)}")
print(f"Aguardando {TEMPO_ESPERA_ERRO/60} minutos antes de tentar novamente...")
time.sleep(TEMPO_ESPERA_ERRO)
# Enviar requisição final
final_page_html = send_final_request(session, csrf_token, state_properties)
code = extract_code_from_html(final_page_html)
if not code:
print(f"[{datetime.now()}] Falha ao extrair código.")
return
token = send_token_request(code, code_verifier)
tokens = extract_tokens_2(token)
if tokens:
access_token = tokens["access_token"]
insert_token_to_db(access_token)
print(f"[{datetime.now()}] Token obtido e salvo com sucesso!")
else:
print(f"[{datetime.now()}] Falha ao processar tokens.")
except Exception as e:
print(f"[{datetime.now()}] Erro inesperado: {str(e)}")
if __name__ == "__main__":
main_loop()
main()