Add release-tag naming-scheme fields (resolution, source, codecs, group)
Match now also parses filename-only release-tag text - resolution, source
(BluRay/HDTV/WEB-DL/...), video/audio codec, and release group - via a new
guess_release_info() in renamr-core's matching module, wired through a new
guess_release_info Tauri command and called alongside the existing TV/movie
guess for every file. Naming schemes can now reference
{resolution}/{source}/{video codec}/{audio codec}/{release group}, or
FileBot's own short names ({vf}/{source}/{vc}/{ac}/{group}).
This commit is contained in:
@@ -17,8 +17,13 @@ target). It can also organize files into subfolders — including ones that don'
|
||||
yet — when the naming scheme includes a `/`. Every completed batch is logged to a
|
||||
history panel that can undo it (moving files back for Move, or just removing what was
|
||||
created for Copy/Symlink). A single loaded batch can freely mix TV episodes and movies
|
||||
— each file only fills in the fields that apply to it. Full media-metadata bindings are
|
||||
not yet ported. See "Porting roadmap" below.
|
||||
— each file only fills in the fields that apply to it. "Match" also parses release-tag
|
||||
text straight out of the filename — resolution, source (BluRay/HDTV/WEB-DL/…),
|
||||
video/audio codec, release group — so naming schemes can reference
|
||||
`{resolution}`/`{source}`/`{video codec}`/`{audio codec}`/`{release group}` (or
|
||||
FileBot's own `{vf}`/`{source}`/`{vc}`/`{ac}`/`{group}`) without a media prober; the
|
||||
rest of FileBot's full media-metadata bindings (real probed video/audio stream info)
|
||||
are not yet ported. See "Porting roadmap" below.
|
||||
|
||||
The naming scheme is fully user-editable from the app (the "Naming Scheme" button next
|
||||
to the New Names list) — the default is `{show name} - {season number}x{episode
|
||||
@@ -111,9 +116,12 @@ that item is skipped rather than overwritten.
|
||||
```
|
||||
crates/renamr-core/ Pure Rust core: naming-expression engine (ported), local
|
||||
filename-based season/episode *and movie title/year* matching
|
||||
(ported, `matching/`), text-similarity scoring for disambiguating
|
||||
search results (`similarity/`, partial `EpisodeMetrics` port), a
|
||||
TMDB metadata client (`web/tmdb.rs` — TV search + episode lookup
|
||||
(ported, `matching/`), plus filename-based release-tag parsing in
|
||||
the same module (`guess_release_info` — resolution, source, video/
|
||||
audio codec, release group), text-similarity scoring for
|
||||
disambiguating search results (`similarity/`, partial
|
||||
`EpisodeMetrics` port), a TMDB metadata client (`web/tmdb.rs` — TV
|
||||
search + episode lookup
|
||||
and movie search + lookup, both disambiguated via `similarity/`,
|
||||
tested against a mocked HTTP server via `mockito`), the on-disk
|
||||
rename engine (`rename/` — skip-on-conflict, Move/Copy/Symlink
|
||||
@@ -188,7 +196,13 @@ ported from, for anyone picking this up:
|
||||
|
||||
1. **Full naming-scheme bindings** — `net.filebot.format.MediaBindingBean` (1354 lines):
|
||||
all the `{n}`, `{s00e00}`, `{airdate}`, `{vf}` (video format), etc. binding
|
||||
properties. Currently only whatever bindings you pass in manually are available.
|
||||
properties. A filename-tag-based subset is now ported and wired to "Match"
|
||||
(`guess_release_info` in `crates/renamr-core/src/matching`): `{vf}`/`{resolution}`,
|
||||
`{source}`, `{vc}`/`{video codec}`, `{ac}`/`{audio codec}`, `{group}`/`{release
|
||||
group}`. What's still missing is everything MediaBindingBean derives from actually
|
||||
*probing* the media file (real video/audio stream resolution, duration, bitrate,
|
||||
frame rate, file size/hash, etc.) — Renamr ships no ffprobe/MediaInfo dependency, so
|
||||
those bindings only work when a release name happens to carry the info as text.
|
||||
2. **String/expression helper methods** — `net.filebot.format.ExpressionFormatMethods`
|
||||
(636 lines): FileBot-specific Groovy string extensions like `.pad()`, `.sortName()`.
|
||||
Only a small subset (`any`, `all_of`, `concat`) is ported so far
|
||||
|
||||
Reference in New Issue
Block a user