#!/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 --clear ripD msg_client.py --kill msg_client.py --msg "$1" --timeout $2 --tag ripD } >& /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)) TXT="($N min. elapsed)" sleep 60 done } ######################################################################## osd "Detecting DVD..." 60 & # first make sure DMA is on: sudo hdparm -d1 -u1 $DEV >& /dev/null dvdFound=false for c in {1..10}; do dvdBACKlog=$(dvdbackup -i /dev/sr0 -I) if [[ $dvdBACKlog == *"information"* ]]; then echo "`date` detected DVD" >> $LOG rm -f /tmp/.ripLock.* # 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') dvdFound=true osd "Found DVD '$TITLE'" 10 & sleep 1 break fi sleep 3 done if ! $dvdFound ; then echo "no DVD" >> $LOG osd "DVD not found" 10 & eject ; eject exit 0 fi #======================================================================= 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 #======================================================================= 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' FILE=$TITLE elif [[ $1 = "h" ]]; then COMMAND='HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "HQ 480p30 Surround" --main-feature' FILE=$TITLE.mp4 elif [[ $1 = "n" ]]; then COMMAND='HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "Fast 480p30" --main-feature' FILE=$TITLE.mp4 elif [[ $1 = "l" ]]; then COMMAND='HandBrakeCLI -i $DEV -o $dir/$TITLE.mp4 --preset "Very Fast 480p30" --main-feature' FILE=$TITLE.mp4 else 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" & sleep 1 ; aplay $Bsnd eval $COMMAND # Finish: rm -f $LOCK sleep 1 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 echo "" >> $LOG exit 0 ######################################################################## # End