MediaLint
A Rust CLI and desktop GUI that audits Plex movie and TV libraries for naming problems.
Released; no public download
Description
Plex expects a fixed naming scheme for movie and TV folders and files. MediaLint walks the library roots, flags files and folders that break that scheme, and resolves the title and year behind each flagged name through TMDB to suggest a corrected path. It is for a self-hosted Plex library that needs cleaning, where a bulk rename with no way back is the thing to avoid.
Block diagram
- Library roots
- Scanner
- Rules
- TMDB resolver
- Report
Decisions
Reuse Avatarr's resolver through a small extracted crate
Avatarr is my earlier media manager, now archived. Its TMDB and IMDb resolver and the Plex naming formatters moved out of Avatarr's core into a new avatarr-media crate, with Avatarr's existing tests guarding a refactor that changed no behaviour. MediaLint depends only on that crate and the parser, which keeps Avatarr's download client out of its build. The price is a path dependency: a source build needs the Avatarr checkout beside MediaLint.
Advisory by default, with a journal before every move
A scan only reports; moving files takes an explicit fix command, a preview and approval. Apply and undo refuse paths outside the configured roots, never replace an occupied destination, and save each undo intent before its move, with cross-device moves done as copy, fsync and delete. Atomicity stops at other tools: a process with the same write access can still race a move.
Model advice never reaches the fix planner
Review by a hosted or local model is opt-in and limited to parser edge cases. Only the media kind, the rule messages, any deterministic suggestion and root-relative paths leave the machine, with a strict response schema. The answer lands in a separate field that the fix planner ignores, so the GUI shows the advice but it cannot be approved or passed to Fix.
Errata
- The AppImage has no public download at the moment.
Revision history
| Version | Changes |
|---|---|
| 0.23.2 | The release entered in OpenAI's Build Week: AI review results show in the Suggested column and the finding detail, still advisory. |
| 0.23.1 | Approvals can be cleared one row at a time; local endpoints no longer receive the hosted reasoning option. |
| 0.23.0 | Several library locations per media kind, hosted or local AI review settings, and fixes from the GUI dogfood pass. |
| 0.22.0 | End-to-end GUI tests for scan, apply and undo, scan cancellation, and a degraded mode when SQLite cannot open. |