from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from plyer import notification
import time
import os

# --- הגדרות ---
PASSWORD = "admin" 
URL = "http://192.168.1.1/message.html"
CHECK_INTERVAL = 300 # בודק כל 5 דקות

def get_last_seen_message():
    if os.path.exists("last_sms.txt"):
        with open("last_sms.txt", "r", encoding="utf-8") as f:
            return f.read().strip()
    return ""

def save_last_seen_message(text):
    with open("last_sms.txt", "w", encoding="utf-8") as f:
        f.write(text)

def check_for_sms():
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    
    driver = None
    try:
        driver = webdriver.Chrome(options=chrome_options)
        # טריק היציבות: לא מחכים יותר מ-30 שניות לטעינת דף!
        driver.set_page_load_timeout(30) 
        
        last_message = get_last_seen_message()
        
        driver.get(URL)
        password_field = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "loginPassword"))
        )
        password_field.send_keys(PASSWORD)
        driver.find_element(By.CSS_SELECTOR, "button.btnRun").click()
        
        time.sleep(3)
        driver.get(URL)
        
        sms_main_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.ID, "SMSButton"))
        )
        sms_main_button.click()
        
        first_sms_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#smsTbody tr button"))
        )
        first_sms_button.click()
        
        sms_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "viewContent"))
        )
        
        time.sleep(2)
        current_sms = sms_element.get_attribute("value")
        
        if current_sms and current_sms.strip() != "":
            if current_sms.strip() != last_message:
                print("נמצאה הודעה חדשה!")
                notification.notify(
                    title='SMS חדש מהסטיק!',
                    message=current_sms,
                    timeout=15 
                )
                save_last_seen_message(current_sms.strip())
            else:
                print("אין הודעות חדשות (הודעה מוכרת).")
                
    except Exception as e:
        print(f"הייתה תקיעה קטנה בתקשורת מול הסטיק, נדלג וננסה בסיבוב הבא.")
    finally:
        if driver:
            driver.quit() # מוודא שהדפדפן נסגר גם אם הייתה שגיאה

# --- תחילת הריצה ---
print("השומר התחיל לעבוד... בודק הודעות ברקע.")
notification.notify(
    title='רובוט ה-SMS',
    message='השומר התחיל לרוץ ברקע ומחכה להודעות!',
    app_icon=None,
    timeout=5 
)

while True:
    check_for_sms()
    print(f"מחכה {CHECK_INTERVAL} שניות לבדיקה הבאה...")
    time.sleep(CHECK_INTERVAL)