Initial commit
This commit is contained in:
106
README.md
106
README.md
@@ -1,2 +1,106 @@
|
||||
# mov-renamarr
|
||||
# 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
|
||||
```
|
||||
|
||||
## 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.
|
||||
|
||||
## 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`).
|
||||
|
||||
Reference in New Issue
Block a user