63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
"""
|
|
=======================================================================
|
|
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()
|