Hi, 
For my first message, I would like to thank the FileBot developers for this application, as well as all members of this forum for their sharing of examples.  
 
I spent a lot of time in this forum, because there are many ideas to find a solution for each way to rename media files.  
 
Here is the way I rename my media files:
MOVIES:
For movies I wanted to classify them in the following order:
By studio (Marvel, Disney, Dreamworks, etc.), by Collection or by genre/
the title of the movie in my language, then in the original language if existing, the year, rating, if audio is not french and have subtitle = [VOSTFR] not subtitle=[VO], resolution and audio channels.
exemple:
_MOVIES\COLLECTION\JAMES─BOND─007\Goldeneye [1995] [6.9★] [tt0113189][HD][5.1].mkv
_MOVIES\GENRE\Action\Sky Hunter [2017] (空天猎) [7.2★] [tt6908536][VO][SD][5.1].mkv
_MOVIES\STUDIO\MARVEL\Avengers L'ère D'ultron [2015] (Avengers Age Of Ultron) [7.3★] [tt2395427][VOSTFR][Full HD][5.1].mkv
Code: Select all
/_MOVIES/
{any
	{ 
	info.productionCompanies*.match(
		/Marvel/ : 'STUDIO/MARVEL',
		/Lucasfilm/ : 'STUDIO/STAR─WARS',
		/DC / : 'STUDIO/DC─COMICS',
		/Disney/ : 'STUDIO/DISNEY',
		/Pixar/ : 'STUDIO/PIXAR',
		/Dreamworks/ : 'STUDIO/DREAMWORKS',
		/Studio Ghibli/ : 'STUDIO/STUDIO─GHIBLI'
		).find()
	}	
	
	{ 'COLLECTION/'+collection
	.replaceFirst(/^(?i)(The)\s(.+)/, /$2, $1/)
	.replaceFirst(/^(?i)(Collection of the)\s(.+)/, /$2 Collection/)
	.replaceAll(/ - Saga/, "")
	.replaceAll(/ Collection/, "")
	.replaceAll(/Saga Collection/, "")
	.replaceAll(/[`´‘’ʻ""“”]/, "'")
	.replaceAll(/[:*?"<>|?]/)
	.replaceAll(/[*\s]+/, "─")
	.upper()
	}
	
	{
	def genreOrder = ['Anilation': 1, 'Comedy': 2, 'Horror': 3, 'Science-Fiction': 4, 'Adventure': 5, 'Romance': 6, 'Drama': 7, 'Action': 8].withDefault{ 100 }
	'GENRE/'+genres.toSorted{ genreOrder[it] }[0]
	}
}/
{
	norm = {
		it
		.upperInitial()
		.lowerTrail()
		.replaceTrailingBrackets()
		.replaceAll(/[`´‘’ʻ""“”]/, "'")
		.replaceAll(/[:*?"<>|?]/)
		.replaceAll(':', 'ː')
		.replaceAll(/[?]/, "?")
	}
	; norm(n)
} 
[{y}] 
{if (norm(n) != norm(primaryTitle)) ' ('+norm(primaryTitle)+')'} 
{" ["+rating+"★]"}
{" ["+imdbid+"]"}
{'fr' in text.language ? '[VOSTFR]' : 'VO'}
{vf == /2160p/ ? '[4K]' : vf =~ /1080p/ ? '[Full HD]' : vf =~ /720p/ ? '[HD]' : '[SD]'}[{channels}]
 
TV SHOW:
For the Series, I classified them by the name of the series + year + number of seasons + number of episodes /
Sub folders with 1 folder by season + number episodes /
Title Serie + Name Episode + if audio is not french and have subtitle = [VOSTFR] not subtitle=[VO], resolution and audio channels.
exemple:
_SERIES\L'AGENCE TOUS RISQUES [1983] [5 Saison, 98 Episodes]\The A-Team [Saison 05-13 épisodes]\L'Agence Tous Risques [1983] - S05E01 - Dishpan Man [SD][2.0].mp4
Code: Select all
/_SERIES/
{
	norm = {
		it
		.upper()
		.replaceTrailingBrackets()
		.replaceAll(/[`´‘’ʻ""“”]/, "'")
		.replaceAll(/[:*?"<>|?]/)
		.replaceAll(':', 'ː')
		.replaceAll(/[?]/, "?")
		.replaceAll(/[*\s]+/, " ")
	}; norm(n)
} [{y}] [{episodelist.season.max()} Saison, {episodelist.count{ it.episode }} Episodes]/
/{localize.english.n.replaceAll(/[!?.]+$/).replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:*?"<>|?]/).upperInitial().replaceTrailingBrackets().lowerTrail().replacePart(', Part $1')} 
[Saison {s.pad(2)}-{episodelist.count{ it.episode && it.season == s }} épisodes]/
{
	norm = {
		it
		.upperInitial()
		.replaceTrailingBrackets()
		.replaceAll(/[`´‘’ʻ""“”]/, "'")
		.replaceAll(/[:*?"<>|?]/)
		.replaceAll(':', 'ː')
		.replaceAll(/[?]/, "?")
		.replaceAll(/[*\s]+/, " ")
	}; norm(n)
} [{y}] 
- {s00e00} - {localize.english.t.replaceAll(/[!?.]+$/).replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:*?"<>|?]/).lowerTrail().replacePart(', Part $1')} 
{'fr' in text.language ? '[VOSTFR]' : '[VO]'}
{vf == /2160p/ ? '[4K]' : vf =~ /1080p/ ? '[Full HD]' : vf =~ /720p/ ? '[HD]' : '[SD]'}[{channels}]
 
MUSIC:
For the music I treat them before with musicbrainz, then with mp3tag, then with Filebot.
I classify them in files according to:
File Format (if MP3 -> _MP3 _) / Genre (if no kind -> _No_Genre _) / Artist / Album / Artist - Title [Bitrate] .ext
exemple:
_MUSIC\_MP3_\_NO_GENRE_\ACDC\Acdc - Tnt [128 kbps].mp3
_MUSIC\_MP3_\SERTANEJO\LEANDRO E LEONARDO\TE AMO DEMAIS\Leandro E Leonardo - 002 - Tudo Me Lembra Você [192 kb s].mp3
_MUSIC\_FLAC_\HEAVY METAL\METALLICA\ONE OF 282\Metallica - 001 - Of Wolf And Man [1 048 kb s].flac
Code: Select all
/_MUSIC/{'_'+ext.upper()+'_'}/
{any
	{genre
	.tokenize(',')
	.first()
	.replace(':' : 'ː')
	.replaceAll(/[`´‘’ʻ""“”]/, "")
	.replaceAll(/[.:*?"<>|?]/)
	.replaceAll(/&/,"and")
	.replaceAll(/#/,"number")
	.replaceTrailingBrackets()
	.lowerTrail()
	.upper()
	}
	{'_NO_GENRE_'}
}/
{
	artist
	.replace(':' : 'ː')
	.replaceAll(/[`´‘’ʻ""“”]/, "")
	.replaceAll(/[.:*?"<>|?]/)
	.replaceAll(/&/,"and")
	.replaceAll(/#/,"number")
	.replaceTrailingBrackets()
	.lowerTrail()
	.upper()
}/
{
	album
	.replaceAll(/&/,"and")
	.replaceAll(/#/,"number")
	.replace(':' : 'ː')
	.replaceAll(/[`´‘’ʻ""“”]/, "")
	.replaceAll(/[.:*?"<>|?]/)
	.replaceTrailingBrackets()
	.lowerTrail()
	.upper()
}
/
{
	artist
	.replace(':' : 'ː')
	.replaceAll(/[`´‘’ʻ""“”]/, "")
	.replaceAll(/[.:*?"<>|?]/)
	.replaceAll(/&/,"and")
	.replaceAll(/#/,"number")
	.replaceTrailingBrackets()
	.lowerTrail()
	.upperInitial()
}
{any
	//{media.'part/position_total' == null ? null : '/CD ' + media.'part/position'}
	{' - '+pi.pad(3)+' - '}
	{' - '}
}
{
	t
	.replace(':' : 'ː')
	.replaceAll(/[`´‘’ʻ""“”]/, "")
	.replaceAll(/[.:*?"<>|?]/)
	.replaceAll(/&/,"and")
	.replaceAll(/#/,"number")
	.replaceTrailingBrackets()
	.lowerTrail()
	.upperInitial()
} 
[{audio[0].bitratestring.replace('/', 'p')}]