#!/bin/bash # The purpose of this script is to encapsulate the calls # made to the rip_dvd script. This is done to help distribute # the resulting ripped files to the proper folders. This # script is called from the mythtv menus for example with a # smaller set of options. ############################################## # Don't run if a previous rip attempt is still running SCRIPT_NAME1="rip_dvd.wrap" SCRIPT_NAME2="xterm -T Ripping" MY_PID=$$ PARENT_PID=$PPID GRAND_PID=$(ps -ef | grep "^[a-zA-Z]* [ ]* $PARENT_PID " | awk '{print $3}') GREAT_GRAND_PID=$(ps -ef | grep "^[a-zA-Z]* [ ]* $GRAND_PID " | awk '{print $3}') ps -ef | grep -e "$SCRIPT_NAME1" -e "$SCRIPT_NAME2" | grep -v grep | grep -v $MY_PID | grep -v $PARENT_PID | grep -v $GRAND_PID | grep -v $GREAT_GRAND_PID if [[ $? == 0 ]]; then echo -e "-E- Found an instance of this script already running. Aborting this additional attempt to rip..." echo -e " my_pid=$MY_PID parent_pid=$PARENT_PID grand_pid=$GRAND_PID great_grand_pid=$GREAT_GRAND_PID\n" CALLER=$(ps -ef | grep "^[a-zA-Z]* [ ]* $PPID " | awk '{print $3}') CALLER_CALLER=$(ps -ef | grep "^[a-zA-Z]* [ ]* $CALLER " | awk '{print $3}') echo I was called from $CALLER who was called by $CALLER_CALLER ps -ef | grep $MY_PID | grep -v grep ps -ef | grep $PARENT_PID | grep -v grep exit 1 fi ############################################## # COMMAND LINE PROCESSING # get the dvdtype from the command line dvdtype=$1 # remove the dvdtype from the args, and interpret the rest # of the args to be passed directly to the rip_dvd script. shift 1 ############################################## if [ -z "$dvdtype" ]; then echo "-E- $0 ' is a required option" exit 1 fi mydir=$(cd $(dirname $0) && pwd) if [ -z "$ripcmd" ] then if [ -x "$mydir/rip_dvd" ] then ripcmd="$mydir/rip_dvd" else echo >&2 "Cannot find your rip_dvd command!" exit 1 fi fi ############################################################################## # Local Machine Settings: # Sources both the "default" conf file tracked by GIT (rip_dvd.conf.dist) # and the local conf file created by each local machine (rip_dvd.conf) # Copy the rip_dvd.conf.dist file to rip_dvd.conf and edit the later. # This will allow you to override all the default values to meet your needs # in a way that won't get clobbered when you pull updates from my GIT repo. ############################################################################## config="${0%/*}/rip_dvd.conf" # The config file will be searched for in the following location order: found_config=0 # 1) /path/to/rip_dvd/script/rip_dvd.conf.dist [ -e "${config}.dist" ] && found_config=1 && . "${config}.dist" # 2) /path/to/rip_dvd/script/rip_dvd.conf [ -e "${config}" ] && found_config=1 && . "${config}" # 3) /etc/rip_dvd.conf [ -e "/etc/rip_dvd.conf" ] && found_config=1 && . "/etc/rip_dvd.conf" # 4) $PWD/rip_dvd.conf [ -e "$PWD/rip_dvd.conf" ] && found_config=1 && . "$PWD/rip_dvd.conf" # Check to make sure we found the config file if [ $found_config -eq 0 ]; then echo "-E- Unable to find the rip_dvd.conf file: $config" exit 1 fi ############################################## # get the name of the DVD from the DVD disk dvdname=`volname $dev | awk '{ print $1 }'` dvdname=${dvdname%.} # remove trailing '.' character ############################################## # Find out what type of DVD we are ripping # And set our destination directory appropriately # dvdtype parameter: # - netflix = DVD ripped as an entire ISO image # since these are only kept around until we watch them, # there is no need to do anything less than full iso. # - collection = Only DVD main feature is ripped # - children = Only DVD main feature is ripped # - church = Only DVD main feature is ripped rip_opts="$* -j 2" if [ "$dvdtype" == "netflix" ]; then echo "-> Ripping Netflix DVD" dest="$moviedir/Netflix" rip_opts="$rip_opts" elif [ "$dvdtype" == "collection" ]; then echo "-> Ripping Personal Collection DVD" dest="$moviedir/Collection" rip_opts="$rip_opts" elif [ "$dvdtype" == "children" ]; then echo "-> Ripping Children's DVD" dest="$moviedir/Children" rip_opts="$rip_opts" elif [ "$dvdtype" == "church" ]; then echo "-> Ripping Church DVD" dest="$moviedir/Church" rip_opts="$rip_opts" else echo '-E- Must specify dvdtype as "netflix" or "collection" or "children" or "church"' exit 1 fi ############################################## # Display progress window # Pop up an xterm window and run the script inside of it echo "xterm -T \"Ripping->$dvdname\" -geometry 72x15+20+10 -bg black -fg white -e \"/bin/bash\" -c \"$ripcmd -d $dest $rip_opts\" &" xterm -T "Ripping->$dvdname" -geometry 72x15+20+10 -bg black -fg white -e "/bin/bash" -c "$ripcmd -d $dest $rip_opts" & ############################################## # OR display the script output directly in the terminal it's called from #$ripcmd -d $dest $rip_opts ##############################################