Curator documentation
Curator is a PySide6 desktop application that manages a Jellyfin-first movie and series pool: it imports files, identifies them through TMDb, groups multiple versions of a film, keeps series in Jellyfin's layout and generates a miniDLNA / Filmotéka tree.
- Architecture — layers, on-disk layout, the pool index and the rules about versions, series and subtitles. Read this first.
- Module reference — one document per source module, with a description of the module and of every class and function.
Module reference
| Source | Purpose |
|---|---|
Curator.py |
Application entry point. |
src/_version.py |
Auto-generated — do not edit manually. |
src/constants.py |
Application-level constants for Curator (build/runtime metadata). |
src/core/config.py |
Configuration for Curator. |
src/core/csfd.py |
ČSFD.cz scraper — a title bridge to TMDb. |
src/core/file.py |
The File class: one playable movie file as the UI sees it. |
src/core/file_manager.py |
FileManager: the application's service layer. |
src/core/hardlink_manager.py |
Hardlink Manager for Curator |
src/core/integrity.py |
Video integrity checking via FFmpeg. |
src/core/jellyfin.py |
Jellyfin server API client — thin, hybrid integration. |
src/core/legacy_meta.py |
Readers for Curator's pre-index metadata layouts. |
src/core/list_manager.py |
Sorting of file lists by name or by date added. |
src/core/media_utils.py |
Helpers around media files: loading small icons for Qt widgets and detecting the vertical video resolution with ffprobe, mapping it to a Rozlišení/<height>p tag. |
src/core/migrate.py |
One-off migration of an existing pool to the Jellyfin naming convention. |
src/core/movie.py |
The movie object — metadata first, files second. |
src/core/naming.py |
Pool file naming convention. |
src/core/nfo.py |
NFO reader — Curator's metadata source after ČSFD. |
src/core/pool_index.py |
Unified metadata index for the Curator pool. |
src/core/series.py |
Series naming + scanning for the Jellyfin TV layout. |
src/core/subtitles.py |
External subtitle sidecars — attach, discover, keep in sync on rename. |
src/core/tag.py |
The Tag value object: a (category, name) pair identified by its full_path (Category/Name). |
src/core/tag_manager.py |
TagManager: the registry of all tag categories and their tags. |
src/core/tmdb.py |
TMDb (The Movie Database) client — Curator's identity source. |
src/core/transforms.py |
Tag-schema value transforms for miniDLNA folder names. |
src/core/utils.py |
Small filesystem helpers shared across the core modules. |
src/ui/qt_app.py |
PySide6 GUI for Curator — reframed around the Filmotéka (movie-library) workflow. |