This commit is contained in:
2026-05-26 22:43:58 +02:00
parent 33acb92a4e
commit 39ff5ca05c
4 changed files with 806 additions and 6 deletions
+40 -3
View File
@@ -39,11 +39,11 @@ Systém pro zálohu, organizaci a tagování ~200 000 rodinných fotek. Lokáln
## DB tabulky v fotky_buzalkovi
### Starší (z předchozí fáze)
- `photos`sha256_file UNIQUE, phash, EXIF JSONB, indexy
### Skupina 1: Zpracovaná metadata fotek
- `photos`naparsované EXIF/IPTC/XMP, hashe, rozměry, GPS. Sloupec `zaloha_id` → FK na `zaloha_obrazku`.
- `tags`, `photo_tags` — tagování
### Zálohovací pipeline (vytvořeno 2026-05-24)
### Skupina 2: Zálohovací pipeline (vytvořeno 2026-05-24)
```sql
zaloha_obrazku
id SERIAL PK, blake3_hash VARCHAR(64) UNIQUE, cesta_zalohy TEXT,
@@ -56,6 +56,10 @@ zdrojove_soubory
UNIQUE(hostname, cesta_zdroje)
```
### Propojení (vytvořeno 2026-05-26)
`photos.zaloha_id``zaloha_obrazku.id` — každá zpracovaná fotka v `photos` je svázána
se zdrojovou zálohou. Resume importu funguje přes LEFT JOIN na tomto sloupci.
---
## Zálohovací skripty
@@ -116,6 +120,39 @@ zdrojove_soubory
- Tower1 spuštěn, přidal 104 souborů
- Windows skript připraven, zatím nespuštěn na žádném PC
## Stav k 2026-05-26
- `zaloha_obrazku` má 1 502 539 záznamů, `zdrojove_soubory` 2 192 650
- Tabulka `photos` vyprázdněna (původně 85 833 testovacích záznamů z filesystémového skenu)
- Přidán sloupec `photos.zaloha_id` (FK → `zaloha_obrazku.id`) pro propojení tabulek
- Nový skript `30 SběrDat/collect_and_import.py` čte z `zaloha_obrazku`, zpracuje metadata
a ukládá přímo do `photos` (bez mezilehlého JSONL). Resume přes `zaloha_id`.
Překlad cesty: `/mnt/remotes/TOWER1.LAN_ZalohaVsechObrazku/...``//Tower1/ZalohaVsechObrazku/...`
- Starší skripty `10_collect_metadata.py` + `import_to_db.py` zůstávají jako reference,
ale produkce běží přes `collect_and_import.py`.
---
## Zpracování metadat (Skupina 1)
**Soubor:** `30 SběrDat/collect_and_import.py`
**Spuštění (Windows, lokální .venv):**
```
.\.venv\Scripts\python.exe "30 SběrDat\collect_and_import.py" --workers 4
```
**Co dělá:**
1. Načte z `zaloha_obrazku` jen záznamy bez odpovídajícího řádku v `photos` (LEFT JOIN přes `zaloha_id`)
2. Pro každou cestu přeloží Linux NFS → Windows UNC
3. Spočítá: SHA-256 souboru i pixelů, pHash, dHash, EXIF (ExifRead), IPTC, XMP, GPS, rozměry
4. Vloží do `photos` po dávkách s `ON CONFLICT (sha256_file) DO NOTHING` (per-batch commit)
5. Resume = bezpečné, znovuspuštění pokračuje kde skončilo
**Argumenty:** `--workers N`, `--batch-size N`, `--limit N`, `--dry-run`
**Závislosti:** psycopg2, python-dotenv, exifread, imagehash, Pillow
---
## Otevřené otázky