""" ======================================================================= Název: outlook_login_v1.0.py Verze: 1.0 Datum: 2026-06-03 Popis: Otevře Outlook OWA (https://outlook.cloud.microsoft/mail/) v persistent Chromium profilu, počká na ruční přihlášení uživatele (včetně MFA), po potvrzení v konzoli uloží session (profile + storage_state) a zavře prohlížeč. Další skripty mohou stejný profil znovu otevřít bez loginu. ======================================================================= """ from pathlib import Path from playwright.sync_api import sync_playwright BASE_DIR = Path(__file__).resolve().parent PROFILE_DIR = BASE_DIR / "outlook_profile" STORAGE_STATE = BASE_DIR / "outlook_auth.json" START_URL = "https://outlook.cloud.microsoft/mail/" def main() -> None: PROFILE_DIR.mkdir(exist_ok=True) with sync_playwright() as p: context = p.chromium.launch_persistent_context( user_data_dir=str(PROFILE_DIR), headless=False, no_viewport=True, args=[ "--disable-blink-features=AutomationControlled", "--start-maximized", ], ) page = context.pages[0] if context.pages else context.new_page() page.goto(START_URL) print() print("=" * 70) print(" Přihlas se v otevřeném okně do Outlooku.") print(" Až budeš v inboxu (vidíš seznam e-mailů), vrať se sem.") print("=" * 70) answer = input(" Hotovo? Napiš 'OK' pro uložení session: ").strip().lower() if answer == "ok": try: context.storage_state(path=str(STORAGE_STATE)) print(f" Uloženo: {STORAGE_STATE}") except Exception as e: print(f" storage_state se neuložil: {e}") print(f" Persistent profil: {PROFILE_DIR}") else: print(" Zrušeno — session se neuloží (profil ale zůstává).") context.close() if __name__ == "__main__": main()