After much testing, trialling, tweaking, and subsequent 'hey, how do I make it do ....' messages to Red (you're awesome mate), I think I've finally got my naming format finalised, and I'm hoping it will come in handy to a few other people. Of course, if you can see anywhere that I can make an improvement (or a way to make it a little less absurdly long), any input is also greatly appreciated
![Smile :-)](./images/smilies/icon_e_smile.gif)
The three types are 'Movies', TV Shows, and Anime.
-----------------------------------------------------------------------------------------------------------------------------
Movies:
Includes:
- Organises movies based on 'collection',
All names converted to Title Case (should re-capatalise Roman numerals in most situations though)
List both Primary & Alternate Title (i.e. English & Japanese) if different
Moves the 'The's to the end
Replaces invalid characters from file, folder, and collection name
Shows year and rating in the folder name
Includes video resolution, video and audio codec, and audio channel info in the file name
Retains tags for 3D, Extended, Uncut, Remastered, Unrated, Uncensored & Special Edition references
Supports multi-part movies
\\mynas\media\Movies\Twilight Saga, The\Twilight Saga - Eclipse, The (2010 PG-13)\Twilight Saga - Eclipse, The [720p x264 DTS 6ch].mkv
\\mynas\media\Movies\Rurôni Kenshin - Ishin Shishi E No Requiem (Samurai X - The Motion Picture) (1997 PG-15)\Rurôni Kenshin - Ishin Shishi E No Requiem [480p DivX MP3 2ch].avi
\\mynas\media\Movies\Alien Collection\Aliens (1986 R)\Aliens (Special Edition) Part 1 [360p XviD AC3 6ch].avi
\\mynas\media\Movies\Alien Collection\Aliens (1986 R)\Aliens (Special Edition) Part 2 [360p XviD AC3 6ch].avi
\\mynas\media\Movies\Sanctum 3D (2011 R)\Sanctum 3D [720p x264 AAC 6ch].mp4
Code: Select all
//mynas/media/Movies/{collection.replaceFirst(/^(?i)(The)\s(.+)/, /$2, $1/).replaceFirst(/^(?i)(Collection of the)\s(.+)/, /$2 Collection/).replaceAll(/Saga Collection/, "Saga").replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:|]/, " - ").replaceAll(/[?]/, "!").replaceAll(/[*\s]+/, " ")}\{norm = {it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:|]/, " - ").replaceAll(/[?]/, "!").replaceAll(/[*\s]+/, " ").replaceAll(/ Ii/, " II").replaceAll(/ IIi/, " III").replaceAll(/ Iv /, " IV ").replaceAll(/ Vi /, " VI ").replaceAll(/ Vii/, " VII").replaceAll(/ Viii/, " VIII").replaceAll(/ Ix/, " IX").replaceAll(/ Xii/, " XII").replaceAll(/ XIIi/, " XIII").replaceAll(/ Xiv/, " XIV").replaceAll(/ Xv/, " XV").replaceAll(/ Xvi/, " XVI").replaceAll(/ Xvii/, " XVII").replaceAll(/ Xviii/, " XVIII").replaceAll(/ Xix/, " XIX").replaceAll(/ Xx/, " XX").replaceAll(/ Xxx/, " XXX").replaceAll(/1St/, "1st").replaceAll(/2Nd/, "2nd").replaceAll(/3Rd/, "3rd").replaceAll(/4Th/, "4th").replaceAll(/5Th/, "5th").replaceAll(/6Th/, "6th").replaceAll(/7Th/, "7th").replaceAll(/8Th/, "8th").replaceAll(/9Th/, "9th").replaceAll(/0Th/, "0th").replaceFirst(/^(?i)(The)\s(.+)/, /$2, $1/)}; norm(n)}{if (norm(n) != norm(primaryTitle)) ' ('+norm(primaryTitle)+')'}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""} ({y}{' '+any{imdb.certification}{certification}.replaceAll(/^\d+$/, 'PG-$0')})/{norm(n)}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""}{fn.contains('Extended') || fn.contains('EXTENDED') || fn.contains('extended.cut') ? ' (Extended)' : fn.contains('Special Edition') || fn.contains('SPECIAL EDITION') || fn.contains('SPECIAL.EDITION') ? ' (Special Edition)' : fn.contains('Unrated') || fn.contains('UNRATED') ? ' (Unrated)' : fn.contains('Uncensored') || fn.contains('UNCENSORED') ? ' (Uncensored)' : fn.contains('Remastered') || fn.contains('REMASTERED') ? ' (Remastered)':""}{" Part $pi"}{" [$vf $vc $ac $af]"}
TV Shows:
Includes:
- Season Based Folders & Episode Numbering
All names converted to Title Case (should re-capatalise Roman numerals in most situations though)
Includes full show name and episode title
Replaces invalid characters from file and folder name
Shows year and rating in the folder name, then organises episodes based on season or specials
Includes video resolution, video and audio codec, and audio channel info in the file name
Retains tags for 3D, Extended, Uncut, Remastered, Unrated, Uncensored & Special Edition references
\\mynas\media\TV Shows\Pushing Daisies (2007 TV-PG)\Season 01\Pushing Daisies S01E01 Pie-Lette [360p XviD MP3 2ch].avi
\\mynas\media\TV Shows\Slap, The (2011 TV-MA)\Season 01\Slap, The S01E01 Hector [360p XviD MP3 2ch].avi
\\mynas\media\TV Shows\Straits, The (2012)\Season 01\Straits, The S01E01-E02 Proposition & The Trouble With Raskols, The [360p XviD MP3 2ch]
\\mynas\media\TV Shows\Looney Tunes (1930)\Season 1943\Looney Tunes S1943E01 Coal Black And De Sebben Dwarfs [240p MPEG MPEG Audio 2ch].mpeg
Code: Select all
//mynas/media/TV Shows/{norm = {it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:|]/, " - ").replaceAll(/[?]/, "!").replaceAll(/[*\s]+/, " ").replaceAll(/ Ii/, " II").replaceAll(/ IIi/, " III").replaceAll(/ Iv /, " IV ").replaceAll(/ Vi /, " VI ").replaceAll(/ Vii/, " VII").replaceAll(/ Viii/, " VIII").replaceAll(/ Ix/, " IX").replaceAll(/ Xii/, " XII").replaceAll(/ XIIi/, " XIII").replaceAll(/ Xiv/, " XIV").replaceAll(/ Xv/, " XV").replaceAll(/ Xvi/, " XVI").replaceAll(/ Xvii/, " XVII").replaceAll(/ Xviii/, " XVIII").replaceAll(/ Xix/, " XIX").replaceAll(/ Xx/, " XX").replaceAll(/ Xxx/, " XXX").replaceAll(/1St/, "1st").replaceAll(/2Nd/, "2nd").replaceAll(/3Rd/, "3rd").replaceAll(/4Th/, "4th").replaceAll(/5Th/, "5th").replaceAll(/6Th/, "6th").replaceAll(/7Th/, "7th").replaceAll(/8Th/, "8th").replaceAll(/9Th/, "9th").replaceAll(/0Th/, "0th").replaceFirst(/^(?i)(The)\s(.+)/, /$2, $1/)}; norm(n)}{if (norm(n) != norm(primaryTitle)) ' ('+norm(primaryTitle)+')'}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""} ({y}{' '+any{imdb.certification}{certification}.replaceAll(/^\d+$/, 'PG-$0')})/{episode.special ? 'Special' : 'Season '+s.pad(2)}/{norm(n)} {episode.special ? 'S00E'+special.pad(2) : s00e00} {norm(t)}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""}{fn.contains('Extended') || fn.contains('EXTENDED') || fn.contains('extended.cut') ? ' (Extended)' : fn.contains('Special Edition') || fn.contains('SPECIAL EDITION') || fn.contains('SPECIAL.EDITION') ? ' (Special Edition)' : fn.contains('Unrated') || fn.contains('UNRATED') ? ' (Unrated)' : fn.contains('Uncensored') || fn.contains('UNCENSORED') ? ' (Uncensored)' : fn.contains('Remastered') || fn.contains('REMASTERED') ? ' (Remastered)':""}{" Part $pi"}{" [$vf $vc $ac $af]"}
Anime:
Includes:
- Absolute Episode Numbering (2 or 3 digits, auto calculating)
All names converted to Title Case (should re-capatalise Roman numerals in most situations though)
List both Primary & Alternate Title (i.e. English & Japanese) if different, and includes full episode title
Moves the 'The's to the end
Replaces invalid characters from file and folder name
Shows year and rating in the folder name
Includes video resolution, video and audio codec, and audio channel info in the file name
Retains tags for 3D, Extended, Uncut, Remastered, Unrated, Uncensored & Special Edition references
\\mynas\media\Anime\Blade Of The Immortal (Mugen No Juunin) (2008)\Blade Of The Immortal - 01 - Criminal [576p x264 AAC 2ch].mp4
\\mynas\media\Anime\Freezing (2011 N A)\Freezing - 01 - Untouchable Queen (Uncensored) [720p x264 AAC 2ch].mkv
\\mynas\media\Anime\One Piece (1999 TV-PG)\One Piece - 001 - I'm Luffy! The Man Who's Gonna Be King Of The Pirates! [480p XviD MP3 2ch].avi
\\mynas\media\Anime\Eternal Aseria, The [Eien No Aseria] (2005)\Eternal Aseria, The - 01 - Voice Of Motome [480p XviD MP3 2ch].avi
Code: Select all
//mynas/media/Anime/{norm = {it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:|]/, " - ").replaceAll(/[?]/, "!").replaceAll(/[*\s]+/, " ").replaceAll(/ Ii/, " II").replaceAll(/ IIi/, " III").replaceAll(/ Iv /, " IV ").replaceAll(/ Vi /, " VI ").replaceAll(/ Vii/, " VII").replaceAll(/ Viii/, " VIII").replaceAll(/ Ix/, " IX").replaceAll(/ Xii/, " XII").replaceAll(/ XIIi/, " XIII").replaceAll(/ Xiv/, " XIV").replaceAll(/ Xv/, " XV").replaceAll(/ Xvi/, " XVI").replaceAll(/ Xvii/, " XVII").replaceAll(/ Xviii/, " XVIII").replaceAll(/ Xix/, " XIX").replaceAll(/ Xx/, " XX").replaceAll(/ Xxx/, " XXX").replaceAll(/1St/, "1st").replaceAll(/2Nd/, "2nd").replaceAll(/3Rd/, "3rd").replaceAll(/4Th/, "4th").replaceAll(/5Th/, "5th").replaceAll(/6Th/, "6th").replaceAll(/7Th/, "7th").replaceAll(/8Th/, "8th").replaceAll(/9Th/, "9th").replaceAll(/0Th/, "0th").replaceFirst(/^(?i)(The)\s(.+)/, /$2, $1/)}; norm(n)}{if (norm(n) != norm(primaryTitle)) ' ('+norm(primaryTitle)+')'}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""} ({y}{' '+any{imdb.certification}{certification}.replaceAll(/^\d+$/, 'PG-$0')})/{norm(n)} - {absolute.pad(episodelist.size() < 99 ? 2 : 3)}{'Special '+special.pad(episodelist.size() < 99 ? 2 : 3)} - {norm(t)}{fn.contains('3D') || fn.contains('3-D') ? ' '+'3D':""}{fn.contains('Extended') || fn.contains('EXTENDED') || fn.contains('extended.cut') ? ' (Extended)' : fn.contains('Special Edition') || fn.contains('SPECIAL EDITION') || fn.contains('SPECIAL.EDITION') ? ' (Special Edition)' : fn.contains('Unrated') || fn.contains('UNRATED') ? ' (Unrated)' : fn.contains('Uncensored') || fn.contains('UNCENSORED') ? ' (Uncensored)' : fn.contains('Remastered') || fn.contains('REMASTERED') ? ' (Remastered)':""}{" Part $pi"}{" [$vf $vc $ac $af]"}
Note: It kind of goes without saying, but be sure to replace '//mynas/media/' and what not with the path to wherever you're storing all your stuff.
Basically, I started with the Movie code, and then tweaked for the shows and everything. I'm sure that Red will probably have a mild heart-attack once he see's how long winded I've done everything (and will inevitably be able to produce some ~25 character magical string that instantly renders 1/3 of what I've got there redundant lol), but hey.. hopefully this proves to be a solid starting point for people to work with.
![Smile :-)](./images/smilies/icon_e_smile.gif)
Good luck, happy renaming, and let me know how you fair with it. If you run into any problems, please let me know.
Cheers,
~Ithiel
MINIMUM VERSION REQUIREMENTS: You must have at least filebot-3.8-r1950 (released 2013/12/28) for the above to function properly. ^.^
Schemes have since been updated - See Note: http://www.filebot.net/forums/viewtopic ... 7490#p7490