Files

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 --open renders 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.