About
You can easily define your own episode naming scheme. It uses Groovy expressions, which means that you can do pretty much anything, especially if you know a little bit about programming. You even get media info bindings.
Examples
{n} - {s}.{e} - {t}
Dark Angel - 3.1 - Labyrinth
{n} - {'S'+s.pad(2)}E{e.pad(2)} - {t}
Dark Angel - S03E01 - Labyrinth
{n.space('.').lower()}.{s}{e.pad(2)}
dark.angel.301
{n} ({y}) ({" CD$pi"})
The Man from Earth (2007) CD1
{n} [{y}] {vf} {af}
The Man from Earth [2007] 720p 6ch
Advanced Examples
{n.upperInitial().space('.')}.{y}.{source}.{vc}-{group}
The.Man.From.Earth.2007.DVDRip.XviD-ALLiANCE
{n.space('_')}_-_{e.pad(2)}_[{resolution}_{vc}_{ac}][{crc32}]
Juuni_Kokuki_-_01_[1280x720_XviD_MP3][3E16AF40]
{n.space('.')}.{'s'+s.pad(2)}e{e.pad(2)}.{t.space('.')}.{vf}.{vc.lower()}.{ac.lower()}
Firefly.s01e01.Serenity.720p.x264.ac3
{n} [{airdate.format('yyyy.MM.dd')}] {t}
The Daily Show [2010.01.05] George Lucas
E:/Complete/{n}{'/Season '+s}/{s+'x'}{e.pad(2)} - {t}
Rename and move files. The directory structure is completely up to you.
{n.replaceTrailingBraces()} - {s+'x'}{e.pad(2)} - {t.replaceAll(/[!?.]+$/).replaceAll(/[`´]/, "'").lowerTrail().replacePart(', Part $1')}
My personal favorite. Pretty much 1x01, but with lots of cleanup operations.
Binding Reference source
Name | Description | Example |
---|---|---|
n | series name | Dark Angel |
s | season number | 3 |
e | episode number | 1 |
t | episode title | Labyrinth |
airdate | episode airdate | 2009-06-01 |
absolute | absolute episode number | 42 |
special | special epsiode number | 1 |
imdb | imdb id | 0756683 |
vc | video codec | x264 |
ac | audio codec | ac3 |
cf | container format | mkv |
vf | video format | 720p |
af | audio channels | 6ch |
resolution | video size | 1280x720 |
source | source medium | BluRay |
group | release group | ALLiANCE |
crc32 | crc32 checksum | 3E16AF40 |
fn | file name | Serenity |
ext | file extension | mkv |
episode | episode object | <default episode name> |
movie | movie object | <default movie name> |
pi | part index | 1 |
pn | number of parts | 2 |
file | file object | <file path> |
media | general media info object | <any general media parameter> |
video | video object [stream 0] | <any video parameter> |
audio | audio object [stream 0] | <any audio parameter> |
text | subtitle object [stream 0] | <any subtitle parameter> |
Function Reference source
pad(length, padding = "0")
Pad strings or numbers with given characters ('0' by default).
replaceAll(pattern, replacement = "")
Replace or remove all occurrences of the pattern.
space(replacement)
Replace all spaces (e.g. "Doctor Who" -> "Doctor_Who").
upperInitial()
Upper-case all initials (e.g. "The Day a new Demon was born" -> "The Day A New Demon Was Born").
lowerTrail()
Lower-case all letters that are not initials (e.g. "Gundam SEED" -> "Gundam Seed").
match(pattern)
Get a substring matching the given pattern or nothing at all.
before(pattern)
Get the substring before the given pattern or the original value.
after(pattern)
Get the substring after the given pattern or the original value.
replaceTrailingBraces(replacement = "")
Replace trailing parenthesis including any leading whitespace (e.g. "The IT Crowd (UK)" -> "The IT Crowd").
replacePart(replacement = "")
Replace part identifier (e.g. "Today Is the Day (1)" -> "Today Is the Day, Part 1").