Files
administrator 7e05384c1f notebookVb
2026-05-24 07:59:25 +02:00

99 lines
4.5 KiB
Markdown
Raw Permalink 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
Systém pro organizaci a tagování ~200 000 rodinných fotek. Lokální nasazení, bez cloudu.
## Kde jsme
- **85 833 fotek** zpracovaných v DB (EXIF, hashe, metadata)
- **39 961 unikátních souborů** fyzicky zálohovaných na Tower1
- Sběr fotek běží ze dvou serverů (tower, Tower1) i z Windows PC
- Průzkumný Streamlit dashboard hotový (`run_webreport.py`)
## Stack
- **PostgreSQL** (192.168.1.76:5432) — jediná databáze, JSONB nahrazuje MongoDB
- **Filesystem** — fotky zůstávají na disku, v DB jen cesty a metadata
- **Python** — veškeré skripty (ExifRead pro EXIF, imagehash pro pHash, blake3 pro zálohy)
## Struktura projektu
```
FotkyBuzalkovi/
├── 00 PictureCollector/ # Sběr fotek ze všech počítačů na Tower1
│ ├── collect_pictures.py # Hlavní skript (Linux, běží na tower + Tower1)
│ ├── collect_pictures_windows.py # Windows verze (pro libovolný PC v síti)
│ ├── create_tables.py # Vytvoření tabulek zaloha_obrazku + zdrojove_soubory
│ ├── verify_tables.py # Ověření struktury tabulek
│ ├── clear_tables.py # TRUNCATE obou tabulek (pozor!)
│ ├── stats.py # Statistiky sběru
│ ├── ssh_deploy.py # Nasazení skriptu na tower
│ ├── ssh_deploy_tower1.py # Nasazení skriptu na Tower1
│ ├── ssh_install_deps.py # Instalace závislostí na tower
│ ├── ssh_install_tower1.py # Instalace závislostí na Tower1
│ ├── ssh_check_mount.py # Kontrola NFS mountu
│ ├── ssh_check_tower1.py # Kontrola Tower1
│ └── ssh_find_userscripts.py # Hledání Unraid user scriptů
├── 20 PrůzkumFotek/ # Průzkum a vizualizace dat
│ ├── report.py # Streamlit dashboard (spouštět přes run_webreport.py)
│ └── analyze_all.py # Konzolová analýza (jednorázová)
├── 30 SběrDat/ # Zpracování fotek — EXIF parsing, import do DB
│ ├── explore_photos.py # Explorační skript (hashe, EXIF, IPTC, XMP)
│ ├── 10_collect_metadata.py # Sběr metadat z fotek
│ ├── import_to_db.py # Import do tabulky photos
│ ├── create_schema.py # Vytvoření tabulek photos/tags/photo_tags
│ └── photo_exploration.json # Výstup exploreru (7 demo fotek)
├── demo_fotky/ # 7 testovacích fotek (iPhone, screenshot, sirotek)
├── output/ # Výstupy skriptů
│ └── 10_metadata.jsonl # Nasbíraná metadata
├── trash/ # Zastaralé skripty (test_mongo.py, test_db_connection.py)
├── run_webreport.py # Spustí Streamlit dashboard (1 klik v PyCharm)
├── .env # Konfigurace (hesla)
├── .gitignore
├── NAVRH.md # → viz docs/NAVRH.md (architektonická rozhodnutí, hashe, metadata)
└── SCHEMA.md # → viz docs/SCHEMA.md (kompletní DB schéma)
```
## Detailní dokumentace
| Soubor | Obsah |
|--------|-------|
| [SCHEMA.md](SCHEMA.md) | Kompletní DB schéma — všechny tabulky, sloupce, indexy, constrainty |
| [NAVRH.md](NAVRH.md) | Architektonická rozhodnutí, 4 úrovně hashů, EXIF/IPTC/XMP, workflow importu |
## Infrastruktura
| Server | IP | Role |
|--------|----|------|
| **tower** | 192.168.1.76 | Hlavní NAS, PostgreSQL, spouští skripty |
| **Tower1** | 192.168.1.50 | Archivní NAS, fyzická záloha fotek (`/mnt/user/ZalohaVsechObrazku`) |
SSH klíče sdílené mezi servery. Z tower přístup na Tower1 přes NFS mount.
## Rychlý start
```powershell
# Spustit dashboard
python run_webreport.py
# Nasadit collect_pictures na server
python "00 PictureCollector/ssh_deploy.py"
python "00 PictureCollector/ssh_deploy_tower1.py"
# Spustit sběr fotek z Windows PC
python "00 PictureCollector/collect_pictures_windows.py"
```
## Otevřené otázky
1. Fotky bez EXIF (7 % fotek) — importovat s mtime / odmítnout / označit?
2. Shoda `sha256_pixels` — přeskočit / sloučit metadata / uložit oba?
3. Storage layout — in-place / `archiv/YYYY/MM/` / content-addressable?
4. Propojení tabulek skupiny 1 (photos) a skupiny 2 (zaloha_obrazku) — zatím žádný FK
5. Fotky 20132021 — velký propad, chybí zdroje (mobily, iCloud?)
6. 4 210 fotek z 2022 bez kamery — pravděpodobně hromadný export z iCloudu (25.9.2023)