Improved default filter selection rules.

This commit is contained in:
Luke Renaud 2020-05-15 17:59:56 -07:00
parent 328fcb2318
commit 464f3e31ca

View file

@ -5,8 +5,8 @@ set -o errexit
################################################################################ ################################################################################
# burnSubs # burnSubs
# version 0.11.1 # version 0.11.2
#################3 #################
# Wishlist: # Wishlist:
# queue encodes # queue encodes
# finish TODOs # finish TODOs
@ -346,18 +346,29 @@ function selectSubs() {
export SUBTITLE_INDEX=-1 export SUBTITLE_INDEX=-1
else else
if [[ $OPTS_SELSUB -lt 0 && $SUB_COUNT -gt 1 ]]; then if [[ $OPTS_SELSUB -lt 0 && $SUB_COUNT -gt 1 ]]; then
OPTS_SELSUB_LANG="${OPTS_SELSUB_LANG:-eng}"
LANG_TEST=$($JQ '[.[].lang] | index("'${OPTS_SELSUB_LANG}'")' "$STREAMS_SUB")
echo " > WARNING: Multiple subtitles!" echo " > WARNING: Multiple subtitles!"
printf " Using default selection rules... " printf " Using default selection rules... "
if [[ "$LANG_TEST" == "null" ]]; then OPTS_SELSUB_LANG="${OPTS_SELSUB_LANG:-eng}"
LANG_TEST=$($JQ '[.[].lang | match("'${OPTS_SELSUB_LANG}'")] | length' "$STREAMS_SUB")
if [[ "$LANG_TEST" == "0" ]]; then
echo "English not found!" echo "English not found!"
echo " ==> Reverting to first subtitle file." echo " ==> Reverting to first subtitle file."
export SUBTITLE_INDEX=$($JQ '.[0].i' "$STREAMS_SUB") export SUBTITLE_INDEX=$($JQ '.[0].i' "$STREAMS_SUB")
else elif [[ "$LANG_TEST" == "1" ]]; then
LANG_SINGLE_SELECT=$($JQ '[.[].lang] | index("'${OPTS_SELSUB_LANG}'")' "$STREAMS_SUB")
# we found english # we found english
echo "English found" echo "English found"
export SUBTITLE_INDEX=$($JQ '.['$LANG_TEST'].i' "$STREAMS_SUB") export SUBTITLE_INDEX=$($JQ '.['$LANG_SINGLE_SELECT'].i' "$STREAMS_SUB")
else
# try to avoid a signs and lyrics track
LANG_SINGLE_SELECT=$($JQ '[.[].lang] | index("'${OPTS_SELSUB_LANG}'")' "$STREAMS_SUB")
echo "Multiple english tracks found."
export SUBTITLE_INDEX=$($JQ 'reduce .[] as $trk ([]; if ($trk.lang == "'${OPTS_SELSUB_LANG}'" and ( ($trk.t | test("lyrics";"i") or ($trk.t | test("signs";"i")) ) | not ) ) then [.[],{t:$trk.t,i:$trk.i}] else . end) | .[].i' "$STREAMS_SUB")
# And display rejected subtitles too.
SUBTITLE_REJECT_LIST=($($JQ 'reduce .[] as $trk ([]; if ($trk.lang == "'${OPTS_SELSUB_LANG}'" and ( ($trk.t | test("lyrics";"i") or ($trk.t | test("signs";"i")) ) ) ) then [.[],{t:$trk.t,i:$trk.i}] else . end) | .[].t' "$STREAMS_SUB"))
for REJECT_SUB in ${SUBTITLE_REJECT_LIST[@]}; do
echo " > rejecting ${REJECT_SUB}"
done
fi fi
else else
if [[ $SUB_COUNT -eq 1 ]]; then if [[ $SUB_COUNT -eq 1 ]]; then
@ -379,12 +390,14 @@ function selectSubs() {
printf " Using default selection rules... " printf " Using default selection rules... "
if [[ "$LANG_TEST" == "null" ]]; then if [[ "$LANG_TEST" == "null" ]]; then
echo "Japanese audio not found!" echo "Japanese audio not found!"
echo " ==> Reverting to first subtitle file." echo " ==> Reverting to first audio stream."
export AUDIO_INDEX=$($JQ '.[0].i' "$STREAMS_AUDIO") export AUDIO_INDEX=$($JQ '.[0].i' "$STREAMS_AUDIO")
else else
# we found english # we found english
echo "Japanese audio found" echo "Japanese audio found"
export AUDIO_INDEX=$($JQ '.['$LANG_TEST'].i' "$STREAMS_AUDIO") export AUDIO_INDEX=$($JQ '.['$LANG_TEST'].i' "$STREAMS_AUDIO")
AUDIO_STREAM_TITLE=$($JQ '.['$LANG_TEST'].t' "$STREAMS_AUDIO")
echo " ==> stream has title ${AUDIO_STREAM_TITLE}"
fi fi
else else
AUDIO_INDEX=$OPTS_SELAUDIO AUDIO_INDEX=$OPTS_SELAUDIO