Added new AID audio track id override command line option -l <aid>
authorAlan J. Pippin <ajp@pippin.pippins.net>
Wed, 15 Jul 2009 13:57:10 +0000 (07:57 -0600)
committerAlan J. Pippin <ajp@pippins.net>
Wed, 15 Jul 2009 13:57:10 +0000 (07:57 -0600)
rip_dvd

diff --git a/rip_dvd b/rip_dvd
index ebcd87ff162d2e652ec0c60330d8e050534ea39c..50bdb22a369d8a3f749659e252abcea0213e1ed1 100755 (executable)
--- a/rip_dvd
+++ b/rip_dvd
@@ -41,6 +41,9 @@ typeset CROP=""
 typeset profile="xvidvhq"
 typeset extension=""
 typeset mailto=""
+typeset default_alang="en"
+typeset -i default_aid=128
+typeset -i aid_override=-1
 typeset -i force_onepass_mode=0
 typeset -i eject_disk=1
 typeset -i keep_isofile=0
@@ -95,7 +98,7 @@ fi
 ##############################################################################################
 # Command line processing
 ##############################################################################################
-while (($#)) && getopts 12mvifkxht:n:d:b:s:t:a:p:e:j: opt "$@"
+while (($#)) && getopts 12mvifkxht:n:d:b:s:t:a:p:e:j:l: opt "$@"
 do
     case $opt in
         (n)     dvdname=$OPTARG;;
@@ -115,6 +118,7 @@ do
        (p)     profile=$OPTARG;;
        (e)     extension=$OPTARG;;
        (j)     eject_disk=$OPTARG;;
+       (l)     aid_override=$OPTARG;;
         (w)     set -$opt;;
         (h)     show_usage=1;;
         (:)     echo >&2 "$0: $OPTARG requires a value"; errors=errors+1;;
@@ -168,6 +172,7 @@ function usage() {
     echo >&2 "   -k            Keep the intermediate files (good for debugging)"
     echo >&2 "                 In -x mode, run with this option to keep the original .VOB file"
     echo >&2 "                 By default, all intermediary files are deleted. Only the final image is kept"
+    echo >&2 "   -l <aid>      Specify the audio AID language ID to rip from the source DVD"
     echo >&2 "   -t <title>    Specify the main feature title to pull from the DVD (only required if this script can't figure it out)"
     echo >&2 "   -w            Set the sh Execute/Verbose flag (causes every command to be echoed)"
     echo >&2 ""
@@ -797,17 +802,22 @@ function get_audio_id_from_iso {
   # This should be 128. However, if 128 is not there, pick the next one that incrementally is.
   iso="$1"
   aidcheck=`tempfile`
-  aid=128
-  mplayer -v -endpos 0 -dvd-device "$iso" dvd://$feature_title > $aidcheck 2>&1
-  grep -q "aid: $aid" $aidcheck
-  while [ $? == 1 ] && [ $aid -lt 159 ]; do
-    (( aid = aid + 1 ))
+  aid=$default_aid
+  alang=$default_alang
+  if [ $aid_override -lt 0 ]; then 
+    mplayer -v -endpos 0 -dvd-device "$iso" dvd://$feature_title > $aidcheck 2>&1
     grep -q "aid: $aid" $aidcheck
-  done
-  [[ -e "$aidcheck" ]] && rm -f "$aidcheck"
+    while [ $? == 1 ] && [ $aid -lt 159 ]; do
+      (( aid = aid + 1 ))
+      grep -q "aid: $aid" $aidcheck
+    done
+    [[ -e "$aidcheck" ]] && rm -f "$aidcheck"
+  else
+    aid=$aid_override
+  fi
   echo "-> Setting the audio stream ID to $aid" | tee -a "$logfile"
   # mencoder default DVD audio track language selection (english)
-  lang_opts="-aid $aid -alang en"
+  lang_opts="-aid $aid -alang $alang"
 }
 
 function get_crop_from_iso { 
@@ -865,17 +875,22 @@ function get_audio_id_from_vob {
   # This should be 128. However, if 128 is not there, pick the next one that incrementally is.
   vob="$1"
   aidcheck=`tempfile`
-  aid=128
-  mplayer -v -endpos 0 "$vob" > $aidcheck 2>&1
-  grep -q "Found audio stream: $aid" $aidcheck
-  while [ $? == 1 ] && [ $aid -lt 159 ]; do
-    (( aid = aid + 1 ))
+  aid=$default_aid
+  alang=$default_alang
+  if [ $aid_override -lt 0 ]; then 
+    mplayer -v -endpos 0 "$vob" > $aidcheck 2>&1
     grep -q "Found audio stream: $aid" $aidcheck
-  done
-  [[ -e "$aidcheck" ]] && rm -f "$aidcheck"
+    while [ $? == 1 ] && [ $aid -lt 159 ]; do
+      (( aid = aid + 1 ))
+      grep -q "Found audio stream: $aid" $aidcheck
+    done
+    [[ -e "$aidcheck" ]] && rm -f "$aidcheck"
+  else 
+    aid=$aid_override
+  fi
   echo "-> Setting the audio stream ID to $aid" | tee -a "$logfile"
   # mencoder default DVD audio track language selection (english)
-  lang_opts="-aid $aid -alang en"
+  lang_opts="-aid $aid -alang $alang"
 }
 
 function check_vob_for_corrupted_start {