Files
mov-renamarr/README.md

127 lines
3.8 KiB
Markdown

# mov-renamarr :clapper:
Fast, safe CLI to rename movie files into Radarr-compatible folders and filenames on Linux. It uses `ffprobe` for media details, filename parsing for hints, and optional online metadata (TMDb/OMDb) with caching. Default action is copy; move/rename-in-place are opt-in.
## Features :sparkles:
- Radarr-style output: `Title (Year)/Title (Year) [quality] [id].ext`
- Safe defaults: copy by default, skip on collision (opt-in overwrite/suffix)
- Metadata providers: TMDb, OMDb, or both (auto picks TMDb if available)
- Optional local LLM (Ollama) for filename parsing and lookup assist
- SQLite cache to reduce repeated lookups
- Reports in text/json/csv (stdout by default)
- Concurrency controls with sensible defaults
## Requirements :clipboard:
- Linux
- `ffprobe` in `PATH` (install via ffmpeg)
## Install :package:
From source:
```bash
cargo build --release
```
Binary will be at `target/release/mov-renamarr`.
Install with Cargo:
```bash
# From a git repo
cargo install --git <repo-url> --locked
# From a local checkout
cargo install --path . --locked
```
## Quick start :rocket:
Create a default config (with comments) and see the config path:
```bash
mov-renamarr
```
Dry-run with TMDb:
```bash
mov-renamarr --input /path/to/in --output /path/to/out --dry-run --provider tmdb
```
Rename in place (no network lookups):
```bash
mov-renamarr --input /path/to/in --rename-in-place --no-lookup
```
## Usage :keyboard:
```
mov-renamarr --input <dir> --output <dir> [flags]
```
Common flags:
- `--move` or `--rename-in-place` (default is copy)
- `--provider auto|tmdb|omdb|both`
- `--no-lookup` (skip external lookups)
- `--report [path]` and `--report-format text|json|csv`
- `--sidecars` (copy/move subtitle/nfo/etc files)
- `--quality-tags resolution,codec,source`
- `--min-score 0-100` (match threshold)
- `--jobs auto|N` and `--net-jobs auto|N`
## Configuration :gear:
Default config location:
`$XDG_CONFIG_HOME/mov-renamarr/config.toml` (fallback `~/.config/mov-renamarr/config.toml`)
Cache location:
`$XDG_CACHE_HOME/mov-renamarr/cache.db` (fallback `~/.cache/mov-renamarr/cache.db`)
The app creates a commented default config on first run and prints the path.
Key options (TOML):
- `provider = "auto"|"tmdb"|"omdb"|"both"`
- `tmdb.api_key` or `tmdb.bearer_token` (TMDb read access token supported)
- `omdb.api_key`
- `quality_tags = ["resolution"]` (or add `codec`, `source`)
- `llm.mode = "off"|"parse"|"assist"`
- `llm.endpoint = "http://localhost:11434"`
- `llm.model = "Qwen2.5:latest"` (recommended for accuracy: `Qwen2.5:14b`)
- `jobs = "auto"|N`, `net_jobs = "auto"|N`
- `sidecars = false` (copy/move sidecars when true)
CLI flags override config, and env vars override config as well.
Full reference: [docs/CONFIG.md](docs/CONFIG.md)
## Providers :globe_with_meridians:
- **TMDb**: preferred when available. Supports API key or read-access bearer token.
- **OMDb**: optional, API key required.
- **Auto**: uses TMDb if configured, else OMDb.
- **No-lookup**: `--no-lookup` (or `--offline`) uses filename/LLM only.
## LLM (optional) :robot:
If enabled, Ollama is used for:
- filename parsing (`llm.mode = "parse"`)
- lookup assistance (`llm.mode = "assist"`)
LLM output is treated as hints; provider results (when enabled) remain the source of truth.
## Reports :memo:
By default, output is printed to stdout.
To write a report file:
```bash
mov-renamarr --input ... --output ... --report
```
This creates `mov-renamarr-report-YYYYMMDD-HHMMSS.txt` in the current directory.
Formats: `--report-format text|json|csv`
## Safety and collisions :shield:
Default is **skip** if the destination exists. Options:
- `--overwrite` to overwrite
- `--suffix` to append ` (1)`, ` (2)`, ...
## Testing :test_tube:
```bash
cargo test
```
## License :scroll:
MIT (see `LICENSE`).
## Release :bookmark:
- Version: `0.1.0`
- See `CHANGELOG.md` for details.