2.9 KiB
2.9 KiB
Tagger
Desktopová aplikace pro správu a organizaci souborů pomocí hierarchických tagů.
Hlavní funkce
- Rekurzivní procházení složek
- Hierarchické tagy (kategorie/název)
- Filtrování podle tagů (AND / OR / NOT logika) a textu
- Metadata v JSON souborech (.!tag) — cestují se souborem
- Integrace s CSFD.cz (automatické načítání žánrů, roku, země)
- Tvorba hardlink struktury adresářů dle tagů
- Automatická detekce rozlišení videí (ffprobe)
Rychlý start
# Instalace závislostí
poetry install
# Spuštění
poetry run python Tagger.py
Klávesové zkratky
| Zkratka | Akce |
|---|---|
Ctrl+O |
Otevřít složku |
Ctrl+T |
Přiřadit tagy |
Ctrl+D |
Nastavit datum |
Ctrl+W |
Zavřít složku |
F5 |
Refresh |
Del |
Odebrat z indexu |
Architektura
┌─────────────────────────────────┐
│ Presentation (PySide6/Qt6) │ src/ui/gui.py
├─────────────────────────────────┤
│ Business Logic │ src/core/ (bez UI importů)
├─────────────────────────────────┤
│ Data Layer │ File, Tag, TagManager, FileManager
├─────────────────────────────────┤
│ Persistence │ JSON .!tag soubory
└─────────────────────────────────┘
Struktura projektu
Tagger/
├── Tagger.py # Entry point
├── src/
│ ├── core/ # Business logika (žádné UI importy!)
│ │ ├── tag.py
│ │ ├── file.py
│ │ ├── file_manager.py
│ │ ├── tag_manager.py
│ │ ├── config.py
│ │ ├── csfd.py
│ │ ├── hardlink_manager.py
│ │ └── media_utils.py
│ └── ui/
│ └── gui.py # Qt6 GUI
└── tests/ # 274 testů
Testování
poetry run pytest tests/ -q
Technologie
- Python: 3.14+
- GUI: PySide6/Qt6
- Dependencies: requests, beautifulsoup4, loguru, python-dotenv
- Package manager: Poetry
Metriky
- Testy: 274 (100% core coverage)
- Verze: 1.1.0
Design Decisions
Proč JSON místo databáze?
- Jednoduchý backup (copy složky)
- Git-friendly (plain text, diffovatelné)
- Metadata zůstanou při přesunu souboru (sidecar)
- Portable — žádné DB závislosti
Proč sidecar soubory (.!tag)?
- Metadata cestují se souborem při přesunu/kopírování
- Čitelné i bez aplikace
- Každý soubor je nezávislý — žádný single point of failure
License
MIT License