Files
Curator/README.md
T

2.3 KiB

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.!index JSON file at the pool root (title, ČSFD link, tags, date per file).

Workflow

  1. Configure the pool and the Filmotéka output folder.
  2. Import a movie: pick a video, enter its Title and a ČSFD link. The file is copied (non-destructively) into pool/Filmy as Title.ext and 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).
  3. Tag movies (Rok, Žánr, Hodnocení, …) and filter them in the UI.
  4. Generate the Filmotéka: movies become a Category/Tag/film hardlink tree (from the Rok / Žánr / Hodnocení categories); copy-as-is folders such as Seriály are 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.