4.0 KiB
4.0 KiB
Curator documentation
Curator is a Rust desktop application (egui) 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 tree of hardlinks.
- Architecture — layers, on-disk layout, the pool index and the rules about versions, series and subtitles. Read this first.
- API reference — every public type and function is documented in the source;
cargo doc --openrenders it.
Module overview
| Source | Purpose |
|---|---|
src/main.rs |
Entry point: .env, logging, opens the window. |
src/bin/tipy-dne.rs |
Standalone "Tipy dne" generator for a systemd timer. |
src/constants.rs |
App name, version (from Cargo.toml), debug flag, window title. |
src/core/config.rs |
Global config (window, pool and output paths) and the default tag schema. |
src/core/error.rs |
CoreError, the error type of every core operation. |
src/core/paths.rs |
pathlib-style helpers: suffix/stem, POSIX-relative paths, recursive walk, moves. |
src/core/naming.rs |
The Title (YYYY) [tmdbid-N].3D.FMT naming convention: build, parse, guess from filenames. |
src/core/movie.rs |
The movie record (Movie, MediaFile), identity keys, version/part labels. |
src/core/file.rs |
File: one pooled video, a view on one media entry of a movie record. |
src/core/pool_index.rs |
PoolIndex: the .Curator.!index JSON store (v1 → v2 migration). |
src/core/series.rs |
Series naming (SxxEyy, Season NN, .ptN) and scanning. |
src/core/subtitles.rs |
Subtitle sidecars: find, attach, follow their video on rename. |
src/core/tag.rs, tag_manager.rs |
Tags (Category/Name) and the registry of known tags. |
src/core/transforms.rs |
Folder-name transforms (rating → ten-point band). |
src/core/nfo.rs |
Read-only NFO reader (genres, year, countries, rating, ids). |
src/core/legacy_meta.rs |
Recovery of ČSFD link / title / year from pre-index layouts. |
src/core/tmdb.rs |
TMDb client: lookups, searches, details for tags. |
src/core/csfd.rs |
ČSFD scraper with the Anubis proof-of-work solver — the title bridge to TMDb. |
src/core/jellyfin.rs |
Jellyfin client: library scan, read back movies. |
src/core/http.rs |
Shared blocking HTTP client (OS certificate store). |
src/core/integrity.rs |
Video integrity check via ffmpeg / ffprobe. |
src/core/migrate.rs |
Classification of TMDb match proposals for an old pool. |
src/core/hardlink_manager.rs |
The miniDLNA hardlink tree, mirrors, special folders, obsolete-link sweep. |
src/core/file_manager/ |
FileManager, the service layer: libraries and settings (mod.rs), movies (movies.rs), versions and parts (versions.rs), series (series_ops.rs), tools (tools.rs), miniDLNA generation (minidlna.rs). |
src/ui/app.rs |
The main window: menu, tag filter, table, detail panel, status bar, actions. |
src/ui/dialogs/ |
One file per dialog (import, edit, series, duplicates, libraries, migration, tags, schema, stats). |
src/ui/common.rs, task.rs |
Message boxes, prompts, background jobs and tasks with progress. |
examples/screenshot.rs |
Developer tool: render the window offscreen to a PNG. |