w22
This commit is contained in:
+40
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user