#!/bin/bash # /usr/LH/bin/ripD_eject.sh # A DVD rip and eject script. ######################################################################## DEV='/dev/sr0' # DVD device MPNT='media/cdrom' # Mount Point Ddir='/myth/video' # DVD output dir List Bsnd='/usr/share/sounds/init.wav' # Begin sound file Esnd='/usr/share/sounds/complete.wav' # End sound file DATE=$(date +%Y%m%d_%H%M) # current date/time LOG='/var/log/mythtv/ripD.log' # name of Log file. TRACK=$(lsdvd | grep -i longest | awk '{print $3}') #Finds longest track FILE=$TITLE #----------------------------------------------------------------------- [ -r /etc/rip.cfg ] && . /etc/rip.cfg #----------------------------------------------------------------------- LOCK=/tmp/.ripLock.$$ [ "$DISPLAY" == "" ] && export DISPLAY=:0 ######################################################################## function osd { # $1=text, $2=delay msg_client.py --kill msg_client.py --msg "$1" --timeout $2 } >& /dev/null function osd_loop() { FN=$1 ; shift TXT="to $dir/$FILE" N=0 while [ -f "$LOCK" ]; do osd "Backing up '$TITLE' $TXT" 70 N=$(($N+1)) # [ -d "$FN" ] && SIZE=$(du -sh $FN | awk '{print $1}') # TXT="$SIZE of $MAX @ $N min. elapsed" TXT="($N min. elapsed)" sleep 60 done } ######################################################################## osd "Detecting DVD..." 60 & echo "`date` detected DVD" >> $LOG rm -f /tmp/.ripLock.* #======================================================================= for dir in $Ddir ; do if [ -d $dir -a -w $dir ]; then break fi done #----------------------------------------------------------------------- if [ ! -d "$dir" ]; then echo "no $dir" >> $LOG osd "$dir Not Found!" 10 & eject ; eject exit 0 fi if [ ! -w "$dir" ]; then echo "$dir not writable" >> $LOG osd "$dir Not Writable!" 10 & eject ; eject exit 0 fi #----------------------------------------------------------------------- mount $DEV >& /dev/null dev=$(readlink $DEV) df=$(df -h /dev/$dev | grep /dev/$dev) MAX=$(echo $df | while read d v r ; do echo $v ; done) echo " backup $MAX to $dir" >> $LOG #======================================================================= # first make sure DMA is on: sudo hdparm -d1 -u1 $DEV >& /dev/null # attempt to get the DVD information: TITLE=$(dvdbackup -i /dev/sr0 -I | grep information | awk '{ s = ""; for (i = 8; i <= NF; i++) s = s $i " "; print s }' | tr -d '"' | sed 's/ /_/g' | sed 's/_$//g') if [ "$TITLE" == "DVD_VIDEO" -o "$TITLE" == "" \ -o "$TITLE" == " " -o "$TITLE" == "[ ].*" ]; then # if not a good title, TITLE="dvdbackup_$DATE" fi echo " $TITLE" >> $LOG if [ $1 = m ] then COMMAND="dvdbackup -M -i $DEV -o $dir -n $TITLE" elif [ $1 = h ] then # COMMAND="mencoder dvd://$TRACK -alang en -oac mp3lame -lameopts br=320:cbr -ovc lavc -lavcopts vcodec=mpeg4:vhq -vf scale -zoom -xy 720 -o $dir/$TITLE.avi" COMMAND="HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "High\ Profile" --main-feature" FILE=$TITLE.mp4 elif [ $1 = n ] then # COMMAND="mencoder dvd://$TRACK -alang en -oac mp3lame -lameopts br=160:cbr -ovc lavc -lavcopts vcodec=mpeg4:vhq -vf scale -zoom -xy 512 -o $dir/$TITLE.avi" COMMAND="HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "Normal" --main-feature" FILE=$TITLE.mp4 elif [ $1 = l ] then # COMMAND="mencoder dvd://$TRACK -alang en -oac mp3lame -lameopts br=96:cbr -ovc lavc -lavcopts vcodec=mpeg4:vhq -vf scale -zoom -xy 320 -o $dir/$TITLE.avi" COMMAND="HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "Classic" --main-feature" FILE=$TITLE.mp4 elif [ $1 = i ] then COMMAND="dd if=$DEV of=$dir/$TITLE.iso bs=2048" FILE=$TITLE.iso fi { # for the redir below: # Begin: touch $LOCK osd_loop "$dir/$TITLE" "$TITLE" & dvdbackup -i $DEV -I sleep 1 ; aplay $Bsnd $COMMAND # Finish: rm -f $LOCK osd "Done Backing up '$TITLE' to $dir/$FILE" 5 & sleep 1 ; aplay $Esnd # Eject the media: sudo eject ; sudo eject } > $dir/.$TITLE.log 2>&1 echo " `du -sh $dir/$FILE`" >> $LOG echo " `date` finished DVD" >> $LOG exit 0 ######################################################################## # End