Files
Tagger/README.md

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