import http.server
import socketserver
import threading
import time
import os
import schedule

# --- CONFIGURAÇÕES ---
PORTA_WEB = 5555
HORARIO_EXECUCAO = "01:00" 

# --- CLASSE PERSONALIZADA PARA LIBERAR O ACESSO (CORS) ---
class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        # Esta linha libera o acesso para qualquer origem (*)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET')
        self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
        return super().end_headers()

# 1. Função que roda os seus scripts
def job_capturar_heatmaps():
    print(f"⏰ Iniciando rotina de capturas...")
    
    # Executa o script de Sites
    print("--- 🚀 Rodando testesite.py ---")
    os.system("python3 testesite.py")
    
    # Executa o script de Revistas
    print("--- 🚀 Rodando testeRevista.py ---")
    os.system("python3 testeRevista.py")
    
    print(f"✅ Rotina finalizada!")

# 2. Função do Servidor Web
def iniciar_servidor_web():
    # Usamos a nossa classe personalizada com CORS
    handler = CORSRequestHandler
    
    socketserver.TCPServer.allow_reuse_address = True
    
    with socketserver.TCPServer(("", PORTA_WEB), handler) as httpd:
        print(f"🌍 Servidor de Imagens rodando na porta {PORTA_WEB}")
        httpd.serve_forever()

# --- INICIALIZAÇÃO ---
if __name__ == "__main__":
    print("🚀 Sistema Iniciado!")

    # A. Inicia o Servidor Web em paralelo
    t = threading.Thread(target=iniciar_servidor_web)
    t.daemon = True
    t.start()

    # B. Configura o Agendamento
    # Se quiser testar agora, descomente a linha abaixo:
    # job_capturar_heatmaps()
    
    schedule.every().day.at(HORARIO_EXECUCAO).do(job_capturar_heatmaps)
    print(f"📅 Agendado para rodar diariamente às {HORARIO_EXECUCAO}")

    # C. Loop Infinito
    while True:
        schedule.run_pending()
        time.sleep(60)
