2.4 KiB
download_all_inbox_eml_v1.0
Verze: 1.0 Datum: 2026-06-03
Cíl
Stáhnout zprávy z Outlook Inboxu jako .eml soubory.
Klíčový princip — virtualizovaný seznam
OWA drží v DOM jen ~16 viditelných řádků. nth(19) proto nefunguje.
Řešení: navigace klávesnicí — vybrat první zprávu a opakovaně mačkat
ArrowDown. Outlook sám scrolluje a dorenderovává. Aktuálně vybraná zpráva
je vždy [role="option"][aria-selected="true"].
Oddělovače sekcí (Today / Yesterday / This week)
Jsou to role="button" aria-expanded prvky, ne zprávy. Když na nich kurzor
po ArrowDown zastaví, žádná zpráva nemá aria-selected
(selected.count() == 0). Takový krok se musí jen přeskočit (ArrowDown dál),
NEpočítat jako zprávu a NEukončovat smyčku. Konec seznamu se pozná až podle
toho, že se aria-label vybrané zprávy přestane měnit (no_progress).
Alternativa: v OWA přepnout řazení na "Show as Messages" (bez seskupení podle data) — pak seznam žádné oddělovače nemá.
Postup
- Otevře OWA z persistent profilu (
outlook_profile/). - Přejde do Inboxu.
- Vybere první zprávu.
- Smyčka: stáhne vybranou (pravý klik → Download → Download as EML) →
ArrowDown→ opakuje, dokud se výběr přestane hýbat (= konec seznamu).
Nastavení (v hlavičce skriptu)
LIMIT— max počet uložených zpráv (None= celý Inbox). Aktuálně30.SKIP_EXISTING—True= soubor stejného jména vdownloads/znovu neuloží;False(aktuální) = existující soubor smaže a uloží nový (přepis).
Výstup
downloads/<název_z_OWA>.eml. Při kolizi jmen:
SKIP_EXISTING=False→ starý soubor se smaže a přepíše novým,SKIP_EXISTING=True→ soubor se ponechá, nový se neuloží.
Spuštění
python download_all_inbox_eml_v1.0.py
Poznámky / omezení
- Celý Inbox (tisíce zpráv) přes UI je pomalý a křehký — pro velký objem
nejdřív zúžit hledáním/filtrem v OWA.
LIMIT=30je rozumný test. SKIP_EXISTINGnešetří čas: identitu zprávy známe až z názvu po stažení, takže pravý klik + download proběhne pro každou zprávu; jen se nepřepíše soubor.- Konec seznamu se pozná tak, že se
aria-labelvybrané zprávy přestane měnit (počítadlono_progress, práhNO_PROGRESS_MAX = 4). - Okno se po doběhnutí nezavře, čeká na Enter.