Thanks for the replay RedNoah, I had already changed permissions (for the Media folder) by following your instructions in previous posts. i added the the '@' symbol to my seriesFormat line (Filebot-Node) to: @/volume1/Media/Downloads/Completed/sonarr/seriesFormat281220.groovy but the following occurred:
Code: Select all
filebot -script 'fn:amc' /volume1/Media/Downloads/Completed/sonarr --output /volume1/Media/TVShows --action move -non-strict --order Airdate --conflict skip --lang en --def 'ut_label=TV' 'clean=y' 'skipExtract=y' 'ignore=.avi|.mp4' 'seriesFormat=@/volume1/Media/Downloads/Completed/sonarr/seriesFormat281220.groovy' 'excludeList=amc.excludes' --apply refresh --log all --log-file '/var/packages/filebot-node/target/data/filebot.log'
------------------------------------------
OpenJDK 64-Bit Server VM warning: Option --illegal-access is deprecated and will be removed in a future release.
Run script [fn:amc] at [Sun Jun 20 00:28:52 AEST 2021]
Parameter: ut_label = TV
Parameter: clean = y
Parameter: skipExtract = y
Parameter: ignore = .avi|.mp4
Parameter: seriesFormat = {n =~ /^(?i)[0-9a-m]/ ? 'TVShows A-M' : 'TVShows N-Z'}:/{ny}/{ny} {episode.special ? 'Specials' :' - S'+s.pad(2)} / {norm={it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/\u0022/, '\'').replaceAll(/[:|]/, ' ').replaceAll(/\?/, '!').replaceAll(/[*\s\.]+/, ' ').replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/[0-9](th|nd|rd)/, { it.lower() })};norm(n)} ({startdate.format('yyyy')}) {episode.special ? 'S00E'+special.pad(2) : s00e00} {norm(t)} {' ' +vf}{' '+source}{' '+fn.matchAll(/PROPER|REPACK|REMUX/)*.upper().sort().join(' ')}{' '+vc.replace('Microsoft', 'VC-1')} {' '+bitdepth+'bit'}{' '+hdr} {def preferredLang = 'Eng'; def useChFilter = false; def filter = { [it.codec, it.ch, it.objects, it.lang] }; def codecList = ['MP2' : 'MP2','MP3' : 'MP3','PCM' : 'PCM','AAC LC' : 'AAC','AAC LC SBR' : 'AAC','AAC LC SBR PS' : 'AAC','AC 3' : 'AC3','AC 3 Dep' : 'EAC3','E AC 3' : 'EAC3','E AC 3 JOC' : 'EAC3 Atmos','AC 3 Dep JOC' : 'EAC3 Atmos','DTS' : 'DTS','DTS 96 24' : 'DTS 96-24','DTS ES' : 'DTS-ES','DTS ES XXCH' : 'DTS-ES','DTS XBR' : 'DTS-HD HRA','DTS ES XBR' : 'DTS-HD HRA','DTS ES XXCH XBR' : 'DTS-HD HRA','DTS XLL' : 'DTS-HD MA','DTS ES XLL' : 'DTS-HD MA','DTS ES XXCH XLL' : 'DTS-HD MA','DTS-HD Master Audio' : 'DTS-HD MA','DTS XLL X' : 'DTS X','MLP FBA' : 'TrueHD','MLP FBA 16 ch' : 'TrueHD Atmos']; def audioStreams = []; def audioClean = { it.replaceAll(/[\p{Pd}\p{Space}]/, ' ').replaceAll(/\p{Space}{2,}/, ' ').slash(' ') }; def channelClean = { it.replaceAll(/Debug.+|Object\sBased\s?\/?|(\d+)?\sobjects\s\/\s|0.(?=\d.\d)|20/).replaceAll(/6.0/,'5.1').replaceAll(/8.0/,'7.1') }; def oneStream = { it.collect{ filter(it) }*.minus(null).unique().flatten().join(' ') }; def dString = { it.toDouble().toString() }; def toInt = { it.toInteger() }; any{audio.collect{ au -> def codec = audioClean(any{ au['CodecID/Hint'] }{ au['Format'] }); def format_profile = any{ audioClean(au['Format_AdditionalFeatures'])}{}; def String ch = any{ channelClean(au.ChannelPositionsString2).tokenize('\\/')*.toDouble().toString().sum() }{ channelClean(dString(au.ChannelsOriginal)) } { channelClean(dString(au.Channels)) }; def chFilter = ( ( ( (ac == 'AAC'||ac == 'MP2'||ac == 'MP3') && ch != '2.0') || ( (ac == 'AC3'||ac == 'EAC3'||ac == 'DTS'||ac == 'TrueHD'||ac == 'MLPFBA') && ch != '5.1' ) ) ? ch : null ); def combined = allOf{codec}{format_profile}.join(' '); audioStreams << ['index' : codecList.findIndexOf { it.key == combined }, 'default' : any {au['default'][0].toBoolean() }{ audio.size == 1 ? true : '' },'codec' : codecList.get(combined, 'Add ' + combined + ' to codecList'), 'combined' : combined, 'ch' : useChFilter ? chFilter : ch, 'bitrate' : any{ toInt(au.BitRate) }{ toInt(au.BitRate_Maximum) }{ dString(au.FrameRate) }{null}, 'lang' : any{ au.'LanguageString3'.upperInitial() }{null} ]; return audioStreams}; def addToList = audioStreams.codec.findAll{ it.contains('Add to') }.unique().sort(); def allStreams = audioStreams.collect{ filter(it) }*.minus(null).unique()*.join(' '); def preferredStream = oneStream(audioStreams.findAll{ it.index == audioStreams.index.max() }); def bestBitRate = oneStream(audioStreams.findAll{ it.bitrate == audioStreams.bitrate.max() }); def defaultStream = oneStream(audioStreams.findAll{ it.default == true }); def bestPreferredLang = any{ audioStreams.findAll{ it.lang == preferredLang }.sort{ a, b -> b.bitrate <=> a.bitrate }.collect{ filter(it) }*.minus(null).unique().get(0).join(' ') }{}; any{addToList}{preferredStream}}{'NO_AUDIO'}} {'en' in text.language ? '[EngSubs]':''} ({minutes} mins) [{file.length() < 1e9 ? (file.length()/1e6).toFloat().round() + ' MB' : (file.length()/1e9).toFloat().round(1) + ' GB'}]{def g = c{group}; def m = c{fn.match(/(?:(?<=[-])[a-z0-9]+$)|(?:^[a-z0-9]+(?=[-]))/)}; if(g==null && m!=null) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null && m!=null && m.lower()!=g.lower()) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null) return '-'+g;}
Parameter: excludeList = amc.excludes
Argument[0]: /volume1/Media/Downloads/Completed/sonarr
Use excludes: /volume1/Media/TVShows/amc.excludes
Input: /volume1/Media/Downloads/Completed/sonarr/war of the worlds s02e03.mkv
Process as TV Series [TV]
Group: {Series=true} => [war of the worlds s02e03.mkv]
Rename episodes using [TheTVDB] with [Airdate]
Lookup via [The War of the Worlds, War of the Worlds]
Fetching episode data for [The War of the Worlds]
Fetching episode data for [The War of the World]
Fetching episode data for [War of the Worlds]
Fetching episode data for [War of the Worlds]
Fetching episode data for [The World of the Married]
Stripping invalid characters from new path: TVShows N-Z:/War of the Worlds (2019)/War of the Worlds (2019) - S02/War Of The Worlds (2019) S02E03 Episode 3 1080p AVC 8bit EAC3 5.1 Eng [EngSubs] (48 mins) [2.1 GB]
[MOVE] from [/volume1/Media/Downloads/Completed/sonarr/war of the worlds s02e03.mkv] to [/volume1/Media/TVShows/TVShows N-Z/War of the Worlds (2019)/War of the Worlds (2019) - S02/War Of The Worlds (2019) S02E03 Episode 3 1080p AVC 8bit EAC3 5.1 Eng [EngSubs] (48 mins) [2.1 GB].mkv]
[MOVE] from [/volume1/Media/Downloads/Completed/sonarr/war of the worlds s02e03.mkv] to [/volume1/Media/TVShows/TVShows N-Z/War of the Worlds (2019)/War of the Worlds (2019) - S02/War Of The Worlds (2019) S02E03 Episode 3 1080p AVC 8bit EAC3 5.1 Eng [EngSubs] (48 mins) [2.1 GB].mkv] failed due to I/O error [Access Denied: /volume1/Media/Downloads/Completed/sonarr/war of the worlds s02e03.mkv -> /volume1/Media/TVShows/TVShows N-Z/War of the Worlds (2019)/War of the Worlds (2019) - S02/War Of The Worlds (2019) S02E03 Episode 3 1080p AVC 8bit EAC3 5.1 Eng [EngSubs] (48 mins) [2.1 GB].mkv]
Processed 0 files
Finished without processing any files
Abort (×_×)
------------------------------------------
[Process error]
🔺 Exit Code: 4
Note I changed standard and advanced permissions
regards,
Tony B