Files
administrator ee14efbd48 notebookVb
2026-06-06 06:26:42 +02:00

10 KiB
Raw Permalink Blame History

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 nechcemewanted 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-buzalkoviquery/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?