Files
fotkyBuzalkovi/POSTUP.md
T
administrator ee14efbd48 notebookVb
2026-06-06 06:26:42 +02:00

228 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FotkyBuzalkovi — pracovní deník
> Živý dokument. Zapisujeme sem co jsme zjistili, co jsme rozhodli a co je na řadě.
> Technická reference → `CONTEXT.md`, návrh architektury → `NAVRH.md`.
---
## Session 2026-06-04
### Stav DB na začátku
| Tabulka | Řádky |
|---------|-------|
| `zaloha_obrazku` | 1 717 182 |
| `zdrojove_soubory` | 3 573 846 |
| `photos` | 1 717 175 |
| `photo_errors` | 3 185 319 |
Všechny fotky mají `processing_status = 'pending'` — pipeline doběhla, další zpracování nezačalo.
### Co jsme zjistili
**Problém 1 — V záloze je spousta odpadu, ne jen rodinné fotky.**
Pipeline sebrala vše co má příponu `.jpg/.jpeg` — včetně:
- PhotoPrism cache thumbnailů (`appdata/photoprism/cache/`) — 229 521 ks, <10 kB
- Plex / Immich cache
- MP3 a LP obaly
- DVD obaly, eBook obálky
- ABC vystřihovánky (skenované na 1200 DPI → soubory 60100 MB)
- Reprodukce obrazů z torrentů (Raffael, Rembrandt... v muzejní kvalitě)
- Stažené obrázky z webu (Dropbox/!!!Days/Stefajir/...)
- Windows AppData (Kindle covers, .NET watermark...)
**Problém 2 — Rok pořízení je hodně porušený.**
- Rok 2024 má 985 754 fotek (>57 % všech) — zřejmě chybný fallback na mtime místo EXIF
- Rok 1863, 20314501 — garbage v EXIF
- Rok 2026 má 93 492 — suspektní
**Sloupec `wanted`:**
Přidán `photos.wanted BOOLEAN NOT NULL DEFAULT FALSE` — všech 1 717 175 fotek má FALSE.
Účel: budeme označovat fotky které chceme zachovat / zpracovat.
### Nástroje
- `00 PictureCollector/preview_sample.py` — zobrazí náhled fotek podle ID
Použití: `python preview_sample.py 101 202 303 ...`
Claude vybere ID přes MCP dotazy, předá příkaz ke spuštění.
- `00 PictureCollector/migrate_add_wanted.py` — přidal sloupec `wanted` (idempotentní)
### Rozhodnutí
#### Pravidla vyloučení cest — část 1 (2026-06-04)
Tyto cesty **nechceme**`wanted` zůstane FALSE, nezpracovávat:
| Vzor cesty (obsahuje) | Důvod | Počet |
|---|---|---|
| `Torrents/Downloads/OOPS!!! International` | porno screenshoty | ~7 105 |
| `Torrents/Downloads/Tampons Pads Period` | porno | ~9 600 |
| `#ColdData/Porno/` | porno screenlists | — |
| `Porno1/` | porno | ~2 730 |
| `#ColdData/000 TORENT OBRAZKY/National Geographic Wallpapers` | stažené wallpapery | ~7 188 |
| `#ColdData/000 TORENT OBRAZKY/[OnlyFans]` | OnlyFans | ~1 377 |
| `#ColdData/000 TORENT OBRAZKY/Great Painters` | reprodukce obrazů | — |
| `UltraCC/` a obsahuje `/jpg` | Hot Wheels katalog a jiné torrent obrázky | ~3 484 |
| `Magentic/Runtime/UserPhotos/css` | webové ikonky | ~1 034 |
| `.Icecream Ebook Reader/` | obrázky z epub knih | — |
| `photoprism/sidecar/` | XMP sidecar soubory | — |
> Otevřené: appdata/photoprism/cache, Immich thumbs, MP3/LP obaly, eBooks — vyřeší se v další části pravidel.
### Schéma — nové sloupce v `photos`
| Sloupec | Typ | Popis |
|---|---|---|
| `wanted` | `BOOLEAN NOT NULL DEFAULT FALSE` | chceme tuto fotku zachovat/zpracovat |
| `category` | `VARCHAR(100)` | kategorie: Fotopast, Rodina, Skeny, … |
### Označené kategorie
| Kamera / kritérium | wanted | category | Počet |
|---|---|---|---|
| BolyMedia SG520 | TRUE | Fotopast | 42 688 |
| Apple iPhones + iPad (viz update_wanted.py) | TRUE | Rodina | — |
| 15 kompaktů (Panasonic, Canon, GoPro, …) | TRUE | Rodina | — |
| Samsung + profesionální (Nikon D5/D4…) | TRUE | Rodina | — |
| 32 dalších fotoaparátů (update_wanted_batch2.py) | TRUE | Rodina | 13 056 |
### Vyloučené skenery (wanted=FALSE, category='Skener-nechceme')
| Skener | Počet | Poznámka |
|---|---|---|
| CanoScan 8800F (`make IS NULL`) | 1 567 | Skeny, nechceme |
> Ostatní skenery (LiDE 300/210/100, 4400F, HP Scanjet G2710, pls3015, djf300/2100/2200, MP210/190) — **dosud nerozhodnuto**.
### Na řadě
- [ ] Prozkoumat co přesně je v záloze — jaký podíl jsou skutečné rodinné fotky
- [ ] Rozhodnout jak filtrovat odpad (path blacklist? size? absence kamery?)
- [ ] Vyřešit problém s roky — proč 57 % fotek padá do 2024
- [ ] Označit první várku fotek jako `wanted = TRUE`
---
## Session 2026-06-05
### Nástroje — nový web preview na Toweru
- **`00 PictureCollector/preview_server.py`** — HTTP server běžící v Docker kontejneru
`python-runner` na Toweru. Renderuje thumbnaily lokálně (rychlé), má lightbox
(klik = plné rozlišení přes `/image?id=`).
- URL: `http://192.168.1.76:8766/preview?ids=101,202,303&thumb=320`
- Kontejner má mount `/mnt/remotes/TOWER1.LAN_ZalohaVsechObrazku``/mnt/ZalohaVsechObrazku:ro`
- Knihovny v image: `psycopg` (v3!), `Pillow` (zabakováno přes `docker commit`)
- **MCP konektor `fotky-buzalkovi`** — `query/tables/describe_table/stats`. SQL dotazy
pouštím přímo, bez mezikroku.
### Pracovní metodika (důležité!)
- **NEoznačovat nechtěné proaktivně** — vždy jen po explicitním pokynu uživatele.
- Před každým hromadným označením složky za odpad: **ověřit jedinečnost přes
pixel/file-hash** (`sha256_pixels`, `sha256_file`). V cache/odpadních složkách se
můžou skrývat unikátní rodinné fotky (viz „Maminka" níže).
- UPDATE pouštět vždy jako **jedna session, autocommit** — paralelní běhy způsobují
deadlock. Před každým během kontrola `pg_stat_activity` na zaseklé UPDATE.
- Marker skripty: `mark_*.py` v `00 PictureCollector/` (idempotentní přes filtr
`category IS DISTINCT FROM ...`).
### Kategorie (rozšířený číselník)
| category | wanted | význam |
|---|---|---|
| `Rodina` | TRUE | rodinné fotky |
| `Kamaradi` | TRUE | fotky kamarádů (Jan Luxemburk Xperie) |
| `Fotopast` | TRUE | fotopast |
| `Odpad-cache` | FALSE | cache aplikací, obaly, web obrázky |
| `Odpad-torrent` | FALSE | stažené torrenty (komiksy, vystřihovánky, software) |
| `Odpad-sken` | FALSE | skenované publikace (série stránek) |
| `Odpad-obaly` | FALSE | CD inlety/obaly s EXIF |
| `Odpad-dokumenty` | FALSE | skeny dokumentů/smluv |
| `Odpad-screenshot` | FALSE | screenshoty z her/aplikací |
| `Porno` | FALSE | porno |
| `Skener-nechceme` | FALSE | skenery (viz session 2026-06-04) |
### Zpracované velké složky
| Složka | Fotek | Výsledek |
|---|---:|---|
| **Tower/appdata** | 1 006 032 | odpad (Odpad-cache); **zachráněno 2 274** fotek Maminky (iPhone 12) z `photoprism/sidecar/Maminka` → Rodina |
| **Tower/Sabnzbd** | 48 442 | celé odpad (usenet downloads, profi Nikon D5/D4 = stažené, ne rodina) |
| **Tower/Torrents + Tower1/Torrents** | 100 938 | celé odpad (Odpad-torrent) |
| **Tower1/#ColdData** | 84 374 | roztříděno 100 %, viz níže |
| **Tower1/#Synology** | 66 462 | rozpracováno (~95 %), viz níže |
### #Synology — rozpracováno (Public/...)
Velký rodinný NAS fotoarchiv. Hash-check potvrdil, že `HD02#FOTKY` je z 99,6 %
**unikátní** (jen 132 fotek má kopii jinde) — není to duplikát jiné zálohy.
**Rodina (chceme) — HOTOVO:**
- `#SERVER/Y/HD02#FOTKY` (30 789) — hlavní archiv 20082020
- `#SERVER/Y/HD02#FOTKY MAMKA` (1 167)
- `DropboxFotky` (14 882)
- `HD02#DVD OSOBNI` (5 834)
- `Fotky` (2 138)
- `#SERVER/Y/WEBS` galerijní alba (906) — starý web Buzalka.com/Gallery2,
alba akcí (USA 2006, lyžování Stoderzinken 2007, Orlík, Střetávka…)
**Odpad — HOTOVO:**
- `#SERVER/Y/WEBS` zbytek (2 153) — web šablony/skiny/moduly Buzalka.cz e-shop → Odpad-cache
**JEŠTĚ NEROZHODNUTO (zbývá ~9 200):**
- `AFotkyFotky` (4 550, 2 245 EXIF) — pravděpodobně fotky
- `#SERVER/JNJ` (1 835, 45 modelů) — smíšené
- `#SERVER/E` (1 629) — smíšené
- `VideoMichalkaiCloud` (277) — Michalka iCloud, pravděpodobně rodina
- `GoPro` (70) — pravděpodobně rodina
- drobnosti (`###StatSoft`, `#SOFTWARE`, `HD02#AUDIO CD A DVD`, `#Kurzy`, `X`…) ~220 → odpad
### #ColdData — detailní rozpad
**Rodina (chceme):**
- `SynologyMaly/photo` (24 198) + `SynologyMaly/Public/Dropbox` (447) — rodinný archiv 19982015 (Canon S40/A40/IXUS, Nikon D80, iPhony, Lumia). Unikátní (bez duplikátů).
- `VladkoSoubory` (871) — syn Vladimír Buzalka ml.
- `DedupPhotos` (285) — Samsung S7 Edge 2019, ověřeno unikátní.
- `LTBS` (40) — rodina (názvy souborů obsahují BUZALKA).
- `Tatinek U/.../Fractal` (19) — iPhone 13, táta.
- `pomoc` Samsung GT-S5230 (26) — rodina.
**Kamaradi (chceme):** `Honza fotky z Xperie` (2 047) — kamarád Jan Luxemburk.
**Odpad:**
- `Porno`, `Porno1`, `MadelineIsWicked` → Porno
- `000 TORENT OBRAZKY`, `Qnap_nepotrebne` (X-Men komiksy, učebnice, software) → Odpad-torrent
- `SynologyMaly/Public/X` (9 134, série e0xxx skenů) → Odpad-sken
- `Qnap` (MP3 obaly, downloads, 81 EXIF CD inletů) → Odpad-cache/Odpad-obaly
- `Museum of Modern Art NY`, hudební alba, Salvador Dali, eBooky, Truecrypt, `DropBox` (software help obrázky) → Odpad-cache
- `Tatinek U` Compass dokumenty + `212` smlouvy → Odpad-dokumenty; DarthAnihilator/Screenshots → Odpad-screenshot
- `pomoc` LegalPorno/Kink snapshoty (28) → Porno
**Výsledek #ColdData:** Rodina 25 889 · Kamaradi 2 047 · Porno 23 502 · Odpad-torrent 21 300 · Odpad-sken 9 134 · Odpad-cache 2 269 · ostatní odpad 228.
### Poučení
- **Cache/download složky ≠ čistý odpad.** PhotoPrism si do `sidecar/` ukládá unikátní
JPEG kopie fotek, jejichž originály v záloze nejsou → před smazáním vždy hash-check.
- Camera-rules (např. „všechny Nikon D5/D4 = Rodina") dávají **false-positives** ve
stažených složkách → path má přednost, ale ověřit obsah.
### Na řadě
- [ ] **Dokončit #Synology** — zbývá ~9 200: `AFotkyFotky`, `JNJ`, `E`,
`VideoMichalkaiCloud`, `GoPro` (náhledy → rozhodnout), drobnosti → odpad
- [ ] Velké zbývající: `TW22/D` (63 706), `Tower1/#Pomoc` (34 500), `Tower1/#Synologymaly` (29 934)
- [ ] Dokončit Canony (a pak ostatní značky foťáků)
- [ ] „BEZ KAMERY" skupina (path-based)
---
## Backlog otevřených otázek
1. Co s "sirotky" bez EXIF — `mtime` / odmítnout / označit?
2. Při shodě `sha256_pixels` — přeskočit / sloučit metadata / uložit oba?
3. Storage layout — nechat in-place / `archiv/YYYY/MM/` / content-addressable?
4. Jak poznat "rodinná fotka" od odpadu bez ruční kontroly?