Improved default filter selection rules.

This commit is contained in:
Luke 2020-05-15 17:59:56 -07:00
parent 1eea92094b
commit 5a18094377

View file

@ -5,8 +5,8 @@ set -o errexit
################################################################################
# burnSubs
# version 0.11.1
#################3
# version 0.11.2
#################
# Wishlist:
# queue encodes
# finish TODOs
@ -346,18 +346,29 @@ function selectSubs() {
export SUBTITLE_INDEX=-1
else
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!"
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 " ==> Reverting to first subtitle file."
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
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
else
if [[ $SUB_COUNT -eq 1 ]]; then
@ -379,12 +390,14 @@ function selectSubs() {
printf " Using default selection rules... "
if [[ "$LANG_TEST" == "null" ]]; then
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")
else
# we found english
echo "Japanese audio found"
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
else
AUDIO_INDEX=$OPTS_SELAUDIO