Page 1 of 2
Advanced Format Help
Posted: 06 Aug 2016, 01:00
by Dio
Hello everybody,
I would like to know how I can reduce this expression ?
Code: Select all
{fn.contains(' (1080p-HDLight)') || fn.contains(' 1080p-HDLight') || fn.contains('(1080p-HDLight)') ? ' (1080p-HDLight)' :""}{fn.contains(' (1080p)') || fn.contains(' 1080p') || fn.contains('.1080p') || fn.contains('(1080p)') ? ' (1080p)' :""}
I have try something like this :
Code: Select all
{replaceAll(/ (1080p-HDLight)| 1080p-HDLight|(1080p-HDLight)/, " (1080p-HDLight)")}{replaceAll(/ (1080p)| 1080p|.1080p|(1080p)/, " (1080p)")}
But it's not working ... :'(
Can somebody show me the way please ?
Thanks in advance !
Best regards,
Dio.
Re: How to concatenate
Posted: 06 Aug 2016, 05:03
by rednoah
I'm not sure what you're trying to do, but I'm fairly certain that this piece of code will do exactly the same and is much more readable:
Code: Select all
{'('+fn.match(/1080p|1080p.HDLight/)+')'}
Re: How to concatenate
Posted: 06 Aug 2016, 12:19
by Dio
Hello rednoah,
Thank you for your help !
It's not exactly what I want, I want have all this strings to be replaced by one, in a minimum of code.
Exemple
My.Family.Movie.1080p-HDL.TrueFrench.x264.2016.avcs
--> I want 1080p-HDL replaced by 1080p-HD-Light
I Want TrueFrench replaced by (TF)
etc ...
where TrueFrench can be found in the original file name as : TrueFrench, or, True-French, or, TF, or, (TF), or, (True.French)
and 1080p-HDL can be found in the original file name as : 1080p-HD-Light, or (1080p.HDLight), or, 1080p.HD-Light, or, 1080p.HDL, or, 1080p.HD.Light
Actually : {'('+fn.match(/1080p|1080p.HDLight/)+')'} put 1080p or 1080p.HDLight without my wanted formating.
I hope you'll understand my need ?
Thanks in advance !
Best regards,
Dio
Re: How to concatenate
Posted: 06 Aug 2016, 14:00
by rednoah
Like this?
Code: Select all
{fn =~ /TF|True.?French/ ? 'TrueFrench' : ''}
String.replaceAll(regex) will work as well of course, but you need to get the regex right (e.g.
(...) is a capturing group and you need to escape it if you want to match the parenthesis).
Re: How to concatenate
Posted: 08 Aug 2016, 16:01
by Dio
Hi rednoah,
Thank you for your reply, but, really, you'll think I'm dumb, but this won't work ...
actually I'm using this scheme :
Formating file name :
Code: Select all
{n.upperInitial().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").replace(':','-').replaceAll(/[?]/,'')} ({info.OriginalName.upperInitial().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").replace(':','-').replaceAll(/[?]/,'')}){fn.contains(' (VFI)') || fn.contains(' VFI') || fn.contains(' vfi') || fn.contains(' Vfi') || fn.contains('.vfi') || fn.contains('.VFI') || fn.contains('.VFi') || fn.contains('(VFI)') ? ' (VFI)' :""}{fn.contains(' (VFF)') || fn.contains(' VFF') || fn.contains(' vff') || fn.contains('.vff') || fn.contains('.VFF') || fn.contains('(vff)') || fn.contains('(VFF)') || fn.contains('(.VFF)') ? ' (VFF)' :""}{fn.contains(' (TF)') || fn.contains(' TF') || fn.contains(' tf') || fn.contains(' TrueFrench') || fn.contains('TrueFrench') || fn.contains('truefrench') || fn.contains('.TRUEFRENCH') || fn.contains('Truefrench') || fn.contains('(truefrench)') ? ' (TF)' :""}{fn.contains(' (NTF)') || fn.contains(' NTF') || fn.contains(' ntf') || fn.contains(' NonTrueFrench') || fn.contains('NonTrueFrench') || fn.contains('nontruefrench') || fn.contains('Nontruefrench') || fn.contains('(non truefrench)') ? ' (NTF)' :""} ({y}) {fn.contains(' (1080p-HDLight)') || fn.contains(' 1080p-HDLight') || fn.contains('(1080p-HDLight)') ? ' (1080p-HDLight)' :""}{fn.contains(' (1080p)') || fn.contains(' 1080p') || fn.contains('.1080p') || fn.contains('(1080p)') ? ' (1080p)' :""}{fn.contains(' (720p-HDLight)') || fn.contains(' 720p-HDLight') || fn.contains('(720p-HDLight)') ? ' (720p-HDLight)' :""}{fn.contains(' (720p)') || fn.contains(' 720p') || fn.contains('.720p') || fn.contains('.720P') || fn.contains('(720p)') ? ' (720p)' :""}{fn.contains(' (DTS)') || fn.contains(' DTS') || fn.contains('.DTS.') || fn.contains('.dts.') || fn.contains('(DTS.)') ? ' (DTS)' :""}{fn.contains(' (DTS-HD)') || fn.contains(' DTS-HD') || fn.contains('.DTS-HD') || fn.contains('.dts-HD') || fn.contains('.dts-hd') || fn.contains('.dtshd') || fn.contains('(DTS-HD)') ? ' (DTS-HD)' :""}{fn.contains(' (DVDRiP)') || fn.contains(' Dvdrip') || fn.contains(' DVDRiP') || fn.contains('.DVDRiP') || fn.contains('.DVDRIP') || fn.contains('(DVDRiP)') ? ' (DVDRiP)' :""}{fn.contains(' (BDRiP)') || fn.contains(' bdrip') || fn.contains(' BDRiP') || fn.contains(' BRRiP') || fn.contains('(BRRiP)') || fn.contains(' Brrip') || fn.contains('(BDRiP)') ? ' (BDRiP)' :""}{fn.contains(' (WEBRiP)') || fn.contains(' Webrip') || fn.contains(' WEBRiP') || fn.contains(' WEB-RiP') || fn.contains(' WEB-DL') || fn.contains(' WEBDL') || fn.contains(' Web-dl') || fn.contains(' Webdl') || fn.contains('(WEBRiP)') ? ' (WEBRiP)' :""}{fn.contains(' (VOSTFR)') || fn.contains(' VOSTFR') || fn.contains(' vostfr') || fn.contains(' Vostfr') || fn.contains('(VOSTFR)') ? ' (VOST-FR)' :""}{fn.contains(' (VOST)') || fn.contains(' VOST') || fn.contains(' vost') || fn.contains(' Vost') || fn.contains('(VOST)') ? ' (VOST)' :""}{fn.contains(' (VO)') || fn.contains(' VO') || fn.contains(' vo') || fn.contains(' Vo') || fn.contains('(VO)') ? ' (VO)' :""}{fn.contains(' (3D)') || fn.contains(' 3D') || fn.contains(' (3d)') || fn.contains(' 3d') || fn.contains('.3d') || fn.contains('.3D') ? ' (3DTB)' :""}{fn.contains(' (3D-TB)') || fn.contains(' 3D-TB') || fn.contains(' (3dtb)') || fn.contains(' 3d-tb') || fn.contains('.3dtb') || fn.contains('3DTB') || fn.contains('(3DTB)') ? ' (3DTB)' :""}{fn.contains(' (3D-SBS)') || fn.contains(' 3D-SBS') || fn.contains(' (3dsbs)') || fn.contains(' 3d-sbs') || fn.contains('.3dsbs') || fn.contains('3DSBS') || fn.contains('(3DSBS)') ? ' (3DSBS)' :""}{fn.contains(' (3D-HSBS)') || fn.contains(' 3D-HSBS') || fn.contains(' (3dhsbs)') || fn.contains(' 3d-hsbs') || fn.contains('.3dhsbs') || fn.contains('3DHS-BS') || fn.contains('(3DHSBS)') ? ' (3D-HSBS)' :""} ({imdbid})
Formating folder name :
Code: Select all
./{n.upperInitial().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").replace(':','-').replaceAll(/[?]/,'')} ({info.OriginalName.upperInitial().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").replace(':','-').replaceAll(/[?]/,'')}){fn.contains(' (VFI)') || fn.contains(' VFI') || fn.contains(' vfi') || fn.contains(' Vfi') || fn.contains('.vfi') || fn.contains('.VFI') || fn.contains('.VFi') || fn.contains('(VFI)') ? ' (VFI)' :""}{fn.contains(' (VFF)') || fn.contains(' VFF') || fn.contains(' vff') || fn.contains('.vff') || fn.contains('.VFF') || fn.contains('(vff)') || fn.contains('(VFF)') || fn.contains('(.VFF)') ? ' (VFF)' :""}{fn.contains(' (TF)') || fn.contains(' TF') || fn.contains(' tf') || fn.contains(' TrueFrench') || fn.contains('TrueFrench') || fn.contains('.TRUEFRENCH') || fn.contains('truefrench') || fn.contains('Truefrench') || fn.contains('(truefrench)') ? ' (TF)' :""}{fn.contains(' (NTF)') || fn.contains(' NTF') || fn.contains(' ntf') || fn.contains(' NonTrueFrench') || fn.contains('NonTrueFrench') || fn.contains('nontruefrench') || fn.contains('Nontruefrench') || fn.contains('(non truefrench)') ? ' (NTF)' :""} ({y}) {fn.contains(' (1080p-HDLight)') || fn.contains(' 1080p-HDLight') || fn.contains('(1080p-HDLight)') ? ' (1080p-HDLight)' :""}{fn.contains(' (1080p)') || fn.contains(' 1080p') || fn.contains('.1080p') || fn.contains('(1080p)') ? ' (1080p)' :""}{fn.contains(' (720p-HDLight)') || fn.contains(' 720p-HDLight') || fn.contains('(720p-HDLight)') ? ' (720p-HDLight)' :""}{fn.contains(' (720p)') || fn.contains(' 720p') || fn.contains('.720p') || fn.contains('.720P') || fn.contains('(720p)') ? ' (720p)' :""}{fn.contains(' (DTS)') || fn.contains(' DTS') || fn.contains('.DTS.') || fn.contains('.dts.') || fn.contains('(DTS.)') ? ' (DTS)' :""}{fn.contains(' (DTS-HD)') || fn.contains(' DTS-HD') || fn.contains('.DTS-HD') || fn.contains('.dts-HD') || fn.contains('.dts-hd') || fn.contains('.dtshd') || fn.contains('(DTS-HD)') ? ' (DTS-HD)' :""}{fn.contains(' (DVDRiP)') || fn.contains(' Dvdrip') || fn.contains(' DVDRiP') || fn.contains('.DVDRiP') || fn.contains('.DVDRIP') || fn.contains('(DVDRiP)') ? ' (DVDRiP)' :""}{fn.contains(' (BDRiP)') || fn.contains(' bdrip') || fn.contains(' BDRiP') || fn.contains(' BRRiP') || fn.contains('(BRRiP)') || fn.contains(' Brrip') || fn.contains('(BDRiP)') ? ' (BDRiP)' :""}{fn.contains(' (WEBRiP)') || fn.contains(' Webrip') || fn.contains(' WEBRiP') || fn.contains(' WEB-RiP') || fn.contains(' WEB-DL') || fn.contains(' WEBDL') || fn.contains(' Web-dl') || fn.contains(' Webdl') || fn.contains('(WEBRiP)') ? ' (WEBRiP)' :""}{fn.contains(' (VOSTFR)') || fn.contains(' VOSTFR') || fn.contains(' vostfr') || fn.contains(' Vostfr') || fn.contains('(VOSTFR)') ? ' (VOST-FR)' :""}{fn.contains(' (VOST)') || fn.contains(' VOST') || fn.contains(' vost') || fn.contains(' Vost') || fn.contains('(VOST)') ? ' (VOST)' :""}{fn.contains(' (VO)') || fn.contains(' VO') || fn.contains(' vo') || fn.contains(' Vo') || fn.contains('(VO)') ? ' (VO)' :""}{fn.contains(' (3D)') || fn.contains(' 3D') || fn.contains(' (3d)') || fn.contains(' 3d') || fn.contains('.3d') || fn.contains('.3D') ? ' (3DTB)' :""}{fn.contains(' (3D-TB)') || fn.contains(' 3D-TB') || fn.contains(' (3dtb)') || fn.contains(' 3d-tb') || fn.contains('.3dtb') || fn.contains('3DTB') || fn.contains('(3DTB)') ? ' (3DTB)' :""}{fn.contains(' (3D-SBS)') || fn.contains(' 3D-SBS') || fn.contains(' (3dsbs)') || fn.contains(' 3d-sbs') || fn.contains('.3dsbs') || fn.contains('3DSBS') || fn.contains('(3DSBS)') ? ' (3DSBS)' :""}{fn.contains(' (3D-HSBS)') || fn.contains(' 3D-HSBS') || fn.contains(' (3dhsbs)') || fn.contains(' 3d-hsbs') || fn.contains('.3dhsbs') || fn.contains('3DHS-BS') || fn.contains('(3DHSBS)') ? ' (3D-HSBS)' :""}/{fn}
Identify "adult" movies, if it's one, add "Horreur"
Code: Select all
{genres.contains('Horror') ? 'Horor' : "Horreur"}
I Want to get this 3 schemes more short to have it in one command. Actually, just one of my scheme can enter as command because too many character for Filebot. I must use 3 command to obtain my wanted format, so each command need to retatg each movie, and it's a lot of pain.
I've try what you said : {'('+fn.match(/1080p|1080p.HDLight/)+')'}
But what I want when patter is found is to change the format, so when on the filename FileBot find "HDLight" or "HDL" or "HD-L" this pattern been replaced by "HD-Light".
I"ve try to use what you said :
Code: Select all
{fn =~ /TF|True.?French/ ? 'TrueFrench' : ''}
so
Code: Select all
{fn.replaceAll(/TF|True.?French/ ? 'TrueFrench' : '')}
and FileBot return one error of JavaLang expression.
I'm really sorry to annoy you with this, but I don't understand, I'm using pattern and Regex with AdvancedRenamer since years and years without any problem, but I'm totaly blocked with FileBot ...
I need to know if I can concatenate this part of scheme as example :
Code: Select all
{fn.contains(' (TF)') || fn.contains(' TF') || fn.contains(' tf') || fn.contains(' TrueFrench') || fn.contains('TrueFrench') || fn.contains('.TRUEFRENCH') || fn.contains('truefrench') || fn.contains('Truefrench') || fn.contains('(truefrench)') ? ' (TF)' :""}
to something like this (I've try, but not working) :
Code: Select all
{fn.contains(' (TF)'|'TF'|' tf'|' TrueFrench'|'TrueFrench'|'.TRUEFRENCH'|'Truefrench'|'Truefrench'|'(truefrench)') ? ' (TF)' :""}
I can't find any real manual for each expression so I'm lost ...
Thanks in advance if you can help me !
Best regards,
Dio.
Re: How to concatenate
Posted: 08 Aug 2016, 16:18
by rednoah
1.
FileBot formats are technically limited to 4 BILLION characters. I highly doubt this is an issue here. If your problem is with Windows CMD then you can use text files to pass in arguments:
viewtopic.php?t=3244
2.
This code is correct:
Code: Select all
{fn =~ /TF|True.?French/ ? 'TrueFrench' : ''}
This code is also correct:
Code: Select all
{fn.replaceAll(/TF|True.?French/, 'TrueFrench')}
3.
Regex for matching all kinds of TR occurrences:
Code: Select all
{fn =~ /[ .][(]?(?i:TF|TRUE.?FRENCH)[)]?/ ? ' (TF)' : ''}
The
/.../ parts are regular expressions. The rest is
Groovy code. You will find lots of online tutorials and hardcopy books on both topics. I recommend learning from the examples though.

Re: How to concatenate
Posted: 08 Aug 2016, 17:15
by Dio
Thank you for your help rednoah, and your patience ....
I've try to use my 2 first scheme in Filebot, but when I'm clicking on "Use Format" FileBot display a red error just very near of the button, and the windows won't closed, FileBot don't accept my 2 schemes in one command, do you know why ? (If I can keep my schemes to use it in one command I'll be really really happy !)
When I'm using your expresion :
Code: Select all
({fn.replaceAll(/1080p.HDLight|1080p.HD-Light|1080p.hdlight|1080p.hdlight|1080p.hdl/, '1080p-HDLight')})
FileBot return all the original file name with just 1080p-HDLight formated as wanted, fn.contains is looking for this pattern and keep it to put in the new file name, why .replaceAll is keep original file name and modifying it, where fn.contains if only keeping found pattern and use it in the new file name ?
What I want is to look for pattern, keeping it and put it as a new name, generated upon scrapper information. I don't know if it's clear ? Sorry for my bad English ...
Thanks in advance.
Best regards,
Dio.
Re: How to concatenate
Posted: 08 Aug 2016, 17:51
by rednoah
1.
It seems in the GUI there is 8192 chars limit because the format is stored in the system preferences. Too bad, formats longer than that are horrible and shouldn't exist.
I don't know how you came up with this code but it's horrible and just a little bit of regex used right would make it infinitely better.
BAD:
Code: Select all
'0Th'.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")
GOOD:
Code: Select all
{'0Th'.replaceAll(/(?i)[0-9]th/, { it.lower() })}
Note: regex is about text patterns, not just ORing together words.
2.
Example 1:
Code: Select all
{'This.is.a.Test'.replaceAll('Test', 'Example')}
Result:
Example 2:
Code: Select all
{'This.is.a.Test' =~ /Test/ ? 'Example' : ''}
Result:
Use whatever works best for you. Example 2 probably more useful for adding tags based on some conditions.
Re: How to concatenate
Posted: 05 Sep 2016, 07:40
by Dio
Hi rednoah,
I'm sorry for my late reply, between my visits to the hospital and those of my big girl I can not put myself in front of the computer ...
Will you do for me a script to rename my movies with my prerequisites for some money ? If yes, how much ?
Please let me know.
Best regards,
Dio.
Re: How to concatenate
Posted: 05 Sep 2016, 16:00
by rednoah
Do you need help with a simple format, or a cmdline call for running filebot on certain files?
I guess my rate is 20 EUR and up. Really depends on what exactly you need or want and to what level of details.

Re: How to concatenate
Posted: 06 Sep 2016, 16:00
by Dio
Hi Rednoah,
thank you for your reply !
I need a script to automate task via cron on Linux system, or via Windows with powershell, but my preferences is under Unix (debian or Ubuntu, no matter).
I Need to have at the top of the script variable for horror path, older than 1980 movies path, cartoon path, childs movie path.
I need to have my movies named as this :
If this is a Horror story they must be on a special folder
If this is a movie released BEFORE 1980 (ie 1979-12 at least) they must be on a specific folder
Each movies must keep format schemes 1080p, 1080p-HDLight, 720p, 720p-HDLight, DVDRiP
If the movie is a TrueFrench it must have (TF) (containing tag TrueFrench or truefrench or TF), if the movie is a VFi or VFQ it must contains (VFi), or (VFQ)
Each movies must be named like this :
Folder :
FrenchMovieName (Original name) (Released date) (Format)
Big Bug Bunny (Big Buck Bunny) (2008)
File name :
FrenchMovieName (Original name) (Released date) (IMDB ID).xxx
I can send you a list of naming schemes of my actual movies, but only in private (mail or IM).
Please let me know, if you can, estimated price, and time to do it ? I can give you ssh access to debian server or raspbian with share access to movie waiting to be renamed, if you want to test and see by yourself ...?
Thanks in advance.
Best regards,
Dio.
Re: How to concatenate
Posted: 06 Sep 2016, 16:17
by rednoah
Well, let's just say 50 for the format prototype.
cron tasks and stuff like that you can set up yourself. I prefer not to deal with other people's machines.
Re: How to concatenate
Posted: 06 Sep 2016, 16:59
by Dio
Ok, sure, I don't ask you to put in place the script, I would just offer you possibility to see how my movies are named, and availability to test your script !
Please let me know how we can do ... Transaction, test, what's your need, movie name (not renamed) and renamed exemples ?
Let me know ! I'll send you by private message my Skype contact ?
Best regards,
Dio.
Re: How to concatenate
Posted: 07 Sep 2016, 00:33
by rednoah
The FileBot Facebook page should work pretty well for sending messages and files:
https://www.facebook.com/filebot/messages
I'll write a first prototype as by your verbal specification, and then you can test it on your files and give me examples of what doesn't work exactly the way you want yet, rinse and repeat until you're happy. Kinda like
this.
Of course, if you don't mind giving me all your file paths as text file, I wouldn't mind that neither. Extra test data is always nice.

Re: How to concatenate
Posted: 07 Sep 2016, 01:49
by Dio
Rednoah,
Ok, seems good !
I don't have FaceBook so, I can't send you message by this way.
I'll send you a list of movie by private message.
I've miss to say, I would love to have characters art, fanart, posters, and all stuff like this for each movie, like MediaElch do it (do you know MediaElch ?).
PayPal to send you money is Ok ?
Best regards,
Dio.
Re: How to concatenate
Posted: 07 Sep 2016, 02:04
by rednoah
1.
Let's focus on the movie format first. You can later plug that into the GUI, or into the amc script for full automation and it'll give you basic artwork/nfo as well (only supported for 1-folder-1-movie formats).
2.
PayPal is fine. Please don't use the Donate button, because PayPal will take 10%. Transfers between EU PayPal accounts are free of charge AFAIK.
Re: How to concatenate
Posted: 07 Sep 2016, 02:25
by rednoah
1st prototype:
Code: Select all
/path/to/{genres =~ /Horror/ ? 'Horror Movies' ? year < 1980 : 'Classic Movies' : 'Movies'}
/{localize.French.name} ({primaryTitle}) ({y})
/{localize.French.name} ({primaryTitle}) ({y}) [{imdbid}] {fn.matchAll(/(?i:DVDRip)|(?i:1080p|720p)(?i:-HDLight)?/)} {'['+fn.match(/(?i:TrueFrench|TF)/)+']'} {'['+fn.match(/(?i:VFi|VFQ)/)+']'}
Please test on a few files (or all of them) and tell me which ones don't give you the output path you want (naming scheme only, if movie auto-detection doesn't work then it's a different issue).
Re: How to concatenate
Posted: 07 Sep 2016, 08:52
by Dio
Hello rednoah,
I've just try and this what I can say :
Missing tag (catch and keep) :
Legend : Tag to find --> Must be show in filename as this
VFF --> (VFF)
VFF-VFI or VFF.VFI --> (VFF+VFI)
VFF-VOA or VFF.VOA --> (VFF+VO)
VFI-VOA or VFI.VOA --> (VFI+VO)
VFF-VO or VFF.VO --> (VFF-VO)
VFF-VFQ or VFF.VFQ --> (VFF+VFQ)
VFQ-VFF or VFQ.VFF --> (VFQ+VFF)
VFF-JP or VFF.JP --> (VFF+JP)
MUET --> (Muet)
.ac3 --> (AC3)
.dts --> (DTS)
HDRip --> (CAM)
BRRip or BDRip --> (BRRiP)
HDTV --> (HDTV)
WEBDL or WEB-DL or web.dl --> (WEB-DL)
french.subforced or fr.subforced --> (Subforced-FR)
Syntax problem :
- I don't want bracket "[" Only "(" in final name, 1080p appear between bracket [1080p] instead of (1080p)
- Same thing for imdb id I want it between "(" instead of "["
- HD Light movie can be tagged with this tags : .HDLight, 1080p.Light, actually they aren't catch
Result problem :
- Some title have ":" or "/" I want it to be replaced by ":"
- Some title have Japanese or Korean name as Original title, could it be in English instead ?
- Movie filename where no resolution tag are, Could it been retrieved from file resolution ? (like Mediainfo do)
- I need upper letter for each word
I want folder be formated like this :
FrenchName (Original Name) (year) (resolution) (sound type : AC3, DTS if present) (language VFF, VFi, etc)
I want file to be formatted like this :
FrenchName (Original Name) (year) (resolution) (language VFF, VFi, etc ...) (imdbid)
Movie detection for switching of folder "horror", movie before 1980, etc doesn't work.
Let me know if you understand. Thanks !
Best regards,
Dio.
Re: How to concatenate
Posted: 07 Sep 2016, 12:49
by rednoah
1.
Can some of these tags be detected from the media itself? For example {ac} will give you the audio codec like AC3 even if it's not in the name. That might make sense for some of these tags.
2.
Resolution can be detected from the media file.
3.
What happens to pre-1980 Horror movies?
Tags
Posted: 08 Sep 2016, 03:31
by rednoah
You have way too many tags. Dealing with them is your job now. This format bit will read a given *.csv file, so you can manage your tags yourself.
Code: Select all
{csv('/path/to/dio.csv').findResults{ p, t -> fn.contains(p) ? " ($t)" : null}.join()}
dio.csv
Organize by genre and year
Posted: 08 Sep 2016, 03:44
by rednoah
This genre detection bit gives you 4 different output folders depending on your 2 conditions:
Code: Select all
{genres =~ /Horror/ ? year < 1980 ? 'Classic Horror Movies' : 'Horror Movies' ? year < 1980 : 'Classic Movies' : 'Movies'}
Colon
Posted: 08 Sep 2016, 03:47
by rednoah
Why would you replace
Colon with
Colon? You probably meant to type some other special colon that isn't actually a colon.
Filename
Posted: 08 Sep 2016, 03:50
by rednoah
This bit is more or less what you want for the filename:
Code: Select all
{localize.French.name.upperInitial().slash('.').colon('.')} ({localize.English.name.upperInitial().slash('.').colon('.')}) ({y}) ({resolution}) ({imdbid})
: and / are replaced with . in this case, but you can change it to fit your needs.
Copy and paste if you want the same for the folder name, and add your own tag matching anywhere you want.
Re: How to concatenate
Posted: 08 Sep 2016, 03:55
by rednoah
This should be all the bits and pieces you need to copy and paste things together to fit your needs. However, for 50 EUR I'm not gonna spend more time on this, since you've added quite a lot of additional complexity in your last post that wasn't obvious in the original requirements.
Re: How to concatenate
Posted: 08 Sep 2016, 04:53
by Dio
Hello Rednoah,
I will look if it's working during this day, I can't ATM.
Let down tags added, just take me the script working as said, I'll deal new tags after by myself.
Actually I'm using 3 steps, one with sed, one with a renamer and a last by script moving files to the right place, all I want is have all this steps being in only one with FileBot.
I understand your point of view, but if I'm billing thing that other people get freely I want it working as expected, do you understand my point of view ?
when I have finished my medicals and I'd go to the hospital, I hope tonight or tomorrow late morning, I look at whether the detection works or not, but for sure, billing 50$ for just a part of my need (I don't include tags added) is not what I was expected !
Best regards,
Dio.