55 lines
2.4 KiB
Markdown
55 lines
2.4 KiB
Markdown
# 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
|
|
1. Otevře OWA z persistent profilu (`outlook_profile/`).
|
|
2. Přejde do Inboxu.
|
|
3. Vybere první zprávu.
|
|
4. 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 v `downloads/` 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=30` je rozumný test.
|
|
- `SKIP_EXISTING` neš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-label` vybrané zprávy přestane měnit
|
|
(počítadlo `no_progress`, práh `NO_PROGRESS_MAX = 4`).
|
|
- Okno se po doběhnutí nezavře, čeká na Enter.
|