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} ({y}){'/Season '+s}/{s+'x'}{e.pad(2)} - {t}
Rename and move files. The directory structure is completely up to you.
{n.replaceTrailingBrackets()} - {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/movie name | Dark Angel |
y | series/movie year | 2009 |
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 |
SxE | season/episode numbers | 1x01 |
S00E00 | season/episode numbers | S01E01 |
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 |
ws | widescreen flag | ws |
sdhd | SD/HD video | SD or HD |
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 | movie part index | 1 |
pn | number of movie parts | 2 |
lang | detect subtitle language | eng |
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).
match(pattern)
Get a substring matching the given pattern or break.
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").
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.
replaceAll(pattern, replacement = "")
Replace or remove all occurrences of the pattern.
replaceTrailingBrackets(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").
Need some help getting started? Check the forums.