Reply - Raw
#!/bin/bash




# seriesFormat, animeFormat or movieFormat
# TV Shows/{n}/{episode.special ? 'Special' : 'Season '+s.pad(2)}/{n} - {episode.special ? 'S00E'+special.pad(2) : s00e00} - {t.replaceAll(/[`´‘’ʻ]/, /'/).replaceAll(/[!?.]+$/).replacePart(', Part $1')}{'.'+lang}
# Anime/{primaryTitle}/{primaryTitle} - {sxe} - {t.replaceAll(/[!?.]+$/).replaceAll(/[`´‘’ʻ]/, /'/).replacePart(', Part $1')}
# Movies/{n} ({y})/{n} ({y}){' CD'+pi}{'.'+lang}
# Music/{n}/{album+'/'}{pi.pad(2)+'. '}{artist} - {t}


#[TEST] Rename [
#~/private/rtorrent/data/Mission Impossible I (1996) BRRip 720p x264 [Dual Audio] [Hindi 5.1+English 5.1]--prisak~~{HKRG}/Mission Impossible I (1996) BRRip 720p x264 [Dual Audio] [Hindi 5.1+English 5.1]--prisak~~{HKRG}.mkv
#] to [
#~/private/demonsaw/shares/Media/Movies/Mission Impossible Collection/Mission Impossible (1996)/Mission Impossible (1996) (720p x264 AC3) [9A0B9FAA][
#BitDepth, 
#BitDepth/String, 
#BitRate, 
#BitRate/String, 
#BitRate_Mode, 
#BitRate_Mode/String, 
#Channel(s), 
#Channel(s)/String, 
#ChannelLayout, 
#ChannelPositions, 
#ChannelPositions/String2, 
#Codec, 
#Codec/Family, 
#Codec/Info, 
#Codec/String, 
#CodecID, 
#Compression_Mode, 
#Compression_Mode/String, 
#Count, 
#Default, 
#Default/String, 
#Delay, 
#Delay/String3, 
#Delay_Source, 
#Delay_Source/String, 
#Duration, 
#Duration/String, Duration/String1, Duration/String2, Duration/String3, Forced, Forced/String, Format, Format/Info, Format_Commercial, Format_Settings_Endianness, Format_Settings_ModeExtension, 
#ID, ID/String, Language, Language/String, Language/String1, Language/String2, Language/String3, Language/String4, Resolution, Resolution/String, SamplingCount, SamplingRate, SamplingRate/String, 
#StreamCount, StreamKind, StreamKind/String, StreamKindID, StreamKindPos, StreamOrder, StreamSize, StreamSize/String, StreamSize/String1, StreamSize/String2, StreamSize/String3, StreamSize/String4, 
#StreamSize/String5, StreamSize_Proportion, Title, UniqueID, Video0_Delay, Video_Delay, acmod, bsid, dialnorm, dialnorm/String, dialnorm_Average, dialnorm_Average/String, dialnorm_Count, dialnorm_Maximum,
#dialnorm_Maximum/String, dialnorm_Minimum, dialnorm_Minimum/String, lfeon]
#.mkv
#]


#//mynas/media/Anime/{norm = {it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/[`´‘’ʻ""“”]/, "'").replaceAll(/[:|]/, " - ").replaceAll(/[?]/, "!").replaceAll(/[*\s]+/, " ").replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/\b[0-9](?i:th|nd|rd)\b/, { it.lower() }).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{certification}{imdb.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.matchAll(/extended|uncensored|remastered|unrated|uncut|directors.cut|special.edition/)*.upperInitial()*.lowerTrail().sort().join(', ').replaceAll(/[._]/, " ") + ')'}{" Part $pi"}{" [$vf $vc $ac $af]"}

#echo ${#@} ${@}

if [ ${#@} -gt 0 ]; then
    SEARCHPATH=("${@}")
else
    SEARCHPATH=("$HOME/private/rtorrent/data")
fi

for i in $(seq 0 $((${#SEARCHPATH[@]} - 1))); do
    SEARCHPATH[$i]=$(realpath ${SEARCHPATH[$i]})
done

echo ${#SEARCHPATH[@]} ${SEARCHPATH[@]}

#exit

filebot  -script $HOME/.config/filebot/scripts/amc.groovy --action hardlink --conflict skip -non-strict --log-file $HOME/.config/filebot/amc.log \
  --output $HOME/private/demonsaw/shares/Media \
  --def unsorted=n music=n artwork=y excludeList=$HOME/.config/filebot/amc-exclude.txt \
  seriesFormat="Series/{n.ascii()}/{episode.special ? 'Special' : 'Season '+s.pad(2)}/{n} - {episode.special ? 'S00E'+special.pad(2) : 'S'+s.pad(2)+'E'+es*.pad(2).join('-')} - {t.replaceAll(/[\`´‘’ʻ]/, /'/).replaceAll(/[!?.]+$/)} ({vf} {vc} {resolution} {ac}{' ' + audios.language.join(',')}) [{crc32}]" \
  animeFormat="Anime/{primaryTitle}/{primaryTitle} - {sxe} - {t.replaceAll(/[!?.]+$/).replaceAll(/[\`´‘’ʻ]/, /'/).replacePart(', Part $1')} ({vf} {vc} {resolution} {ac}{' ' + audios.language.join(',')}) [{crc32}]" \
  movieFormat="Movies/{collection ? collection+'/' : ''}{n} ({y})/{n} ({y}){' CD'+pi}{'.'+lang} ({vf} {vc} {resolution} {ac}{' ' + audios.language.join(',')}) [{crc32}]" \
  "${SEARCHPATH[@]}"