Files
Tagger/README.md

104 lines
2.9 KiB
Markdown

# 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
```bash
# 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í
```bash
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