from playwright.sync_api import sync_playwright

URL = "https://slot-machine.zybg4298.odns.fr/#/291qo"
CLICK_X, CLICK_Y = 640, 360
RESULT_TIMEOUT_MS = 15000


def get(page, key):
    return page.evaluate(f"localStorage.getItem('{key}')")


def main():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        ctx = browser.new_context(ignore_https_errors=True)
        page = ctx.new_page()
        page.goto(URL, wait_until="networkidle", timeout=30000)
        n = 0
        while True:
            credits = get(page, "slotMachine_credits")
            # au premier chargement la clé peut ne pas encore exister
            if credits is not None and int(credits) <= 0:
                break
            # on efface le cooldown puis on recharge pour que le jeu le relise
            page.evaluate("localStorage.setItem('slotMachine_lastPlay', '0')")
            page.reload(wait_until="networkidle", timeout=30000)
            credits_before = get(page, "slotMachine_credits")
            gains_before = get(page, "slotMachine_totalGains")
            page.mouse.click(CLICK_X, CLICK_Y)
            try:
                page.get_by_text("Prochain coup").wait_for(timeout=RESULT_TIMEOUT_MS)
            except Exception:
                page.screenshot(path="blocked.png")
                print("Aucun résultat détecté, voir blocked.png.")
                return
            credits_after = get(page, "slotMachine_credits")
            gains_after = get(page, "slotMachine_totalGains")
            # crédits inchangés = le coup a été refusé
            if credits_before is not None and credits_after == credits_before:
                page.screenshot(path="blocked.png")
                print("Coup refusé par le jeu, voir blocked.png.")
                return
            n += 1
            if gains_after != gains_before:
                page.screenshot(path=f"win_{n}.png")
                print(f"Partie {n} : gagné. Total {gains_after}, crédits {credits_after}.")
            else:
                print(f"Partie {n} : perdu. Total {gains_after}, crédits {credits_after}.")
        page.screenshot(path="final.png")
        print(f"Terminé. Total des gains : {get(page, 'slotMachine_totalGains')}. Capture dans final.png.")
        ctx.close()
        browser.close()


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("Arrêt demandé.")
