b3a61f9e869bda6f434bf9573edcfdf34dba91a0
Curator
Curator is a desktop movie-library manager (Filmotéka). You import video files into a managed pool, tag them, and Curator generates a browsable Filmotéka — a directory tree of hardlinks into the pool — without ever duplicating the actual video data on disk.
Curator is a fork of the former Tagger project; the tagging, filtering and hardlink-tree machinery is inherited and extended into a full library workflow.
Concepts
- Pool — the managed repository of files and the single source of truth.
Curator owns it: it imports and removes files itself, so nothing moves behind
its back. The pool has two top-level folders:
Filmy— movies, organized by tags into the generated tree.Seriály— series (and any other copy-as-is folder), mirrored verbatim.
- Filmotéka (output) — a generated tree of hardlinks into the pool. It is fully disposable: delete it and nothing is lost, because it is regenerated from the pool on demand.
- Pool index — all pool metadata lives in a single
.Curator.!indexJSON file at the pool root (title, ČSFD link, tags, date per file).
Workflow
- Configure the pool and the Filmotéka output folder.
- Import a movie: pick a video, enter its Title and a ČSFD link. The
file is copied (non-destructively) into
pool/FilmyasTitle.extand recorded in the index. If a ČSFD link is given, Curator fetches the movie from ČSFD.cz and assigns Žánr / Rok / Země původu tags automatically (use "Načíst tagy z ČSFD" to (re)fetch later). - Tag movies (Rok, Žánr, Hodnocení, …) and filter them in the UI.
- Generate the Filmotéka: movies become a
Category/Tag/filmhardlink tree (from theRok/Žánr/Hodnocenícategories); copy-as-is folders such asSeriályare mirrored 1:1 as hardlinks.
Running
poetry install
poetry run python Curator.py
The GUI is built with PySide6.
Development
poetry run pytest # tests
poetry run ruff check # lint / format
poetry run mypy # type checking
Building a standalone executable
poetry run pyinstaller Curator.spec
The resulting dist/Curator is the distribution artifact.
Description