##este script monitorea el estado de la plataforma gps

import time
import subprocess
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

# Configuración de Selenium
chrome_driver_path = 'C:/Users/SISTEMAS/Desktop/bot whatsapp/chromedriver.exe'
chrome_binary_path = 'C:/Users/SISTEMAS/Downloads/chrome-win64/chrome-win64/chrome.exe'

chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.binary_location = chrome_binary_path

# Umbral de alerta
UMBRAL = 100000

# Bandera para imprimir el HTML solo la primera vez
html_impreso = False

def enviar_alerta_whatsapp(mensaje):
    subprocess.run(["python", "botwhatsapp.py", f"{mensaje}"])

def obtener_valor():
    global html_impreso

    service = Service(chrome_driver_path)
    driver = webdriver.Chrome(service=service, options=chrome_options)

    try:
        driver.get('https://intranet.stopcar.com.ar/Reportes/gps/reportes_itego.php?usuario=Pastorenze%20Damian')
        time.sleep(5)  # Esperar que cargue todo el contenido

        contenido = driver.page_source

        # Imprimir HTML solo la primera vez
        if not html_impreso:
            print("\n🖥️ HTML completo de la página:\n")
            print(contenido)
            print("\n🔍 Fin del HTML.\n")
            html_impreso = True

        # Buscar el valor con regex robusta
        match = re.search(r'estad[íi]stica\s+total\s+gps\s+restantes\s*:\s*(\d+)', contenido, re.IGNORECASE)

        if match:
            valor = int(match.group(1))
            print(f"🎯 Valor extraído: {valor}")
            return valor
        else:
            print("⚠️ No se encontró el texto esperado en el HTML.")
            return None

    except Exception as e:
        print(f"❌ Error al obtener el valor: {e}")
        return None

    finally:
        driver.quit()

def monitorear():
    while True:
        valor = obtener_valor()

        if valor is not None:
            if valor >= UMBRAL:
                print(f"🚨 Alerta: el valor supera el umbral de {UMBRAL}")
                mensaje = f"⚠️ Alerta: 'Estadística TOTAL GPS Restantes' es {valor}, supera el umbral de {UMBRAL}."
                enviar_alerta_whatsapp(mensaje)
            else:
                print(f"✅ Valor dentro de los límites: {valor}")
        
        time.sleep(60)

if __name__ == '__main__':
    monitorear()
