Dvdselect writedvd.sh

From VDR Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

See dvdselect-plugin.

File
$PATH/dvdselect_writedvd.sh
#!/bin/sh
#
# dvdselect_writedvd.sh
#
# source: dvdselect-plugin
#
# This script will by called by the vdr-plugin dvdselect to copy a DVD to
# write a dvd iso image.
#
# It gets the following parameter:
#
# $1 = filename of the iso file
 
echo "dvdrecord -eject -v dev=0,0,0 speed=4 -dao $1 > /var/log/vdr/writedvd.log 2>&1" | at now


File
$PATH/dvdselect_writedvd.sh
#!/bin/sh
#
# source: http://www.hoochvdr.info
#
# $1 = filename of the iso file
 
DVD_RECORDCMD="growisofs"
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
DVDWRITER=/dev/hdc
 
echo " \
unset SUDO_COMMAND ; \
svdrpsend.pl -d localhost "MESG DVD burn initiated" 2>/dev/null 1>/dev/null ; \
svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null ; \
exec $DVD_RECORDCMD $DVDPLUS_RECORD_OPTS $DVDWRITER=$1 ; \
svdrpsend.pl -d localhost "MESG DVD burn completed" 2>/dev/null 1>/dev/null ; \
svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null ; \
"| at now


File
$PATH/dvdselect_writedvd.sh
#!/bin/sh
#
# source: http://www.hoochvdr.info
#
# Angepasst für LinVDR 0.7, da es kein at-Kommando gibt
# Modified for LinVDR 0.7, because there is no at-command available
#
# $1 = filename of the iso file
 
DVD_RECORDCMD="growisofs"
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
DVDWRITER=/dev/hdc
 
echo " \
svdrpsend.pl -d localhost "MESG DVD brennen gestartet" 2>/dev/null 1>/dev/null ; \
$DVD_RECORDCMD $DVDPLUS_RECORD_OPTS $DVDWRITER=\"$1\" ; \
svdrpsend.pl -d localhost "MESG DVD fertig" 2>/dev/null 1>/dev/null ; \
" > /tmp/dvdselect-burn-temp.sh
 
chmod 700 /tmp/dvdselect-burn-temp.sh
/tmp/dvdselect-burn-temp.sh &


File
$PATH/dvdselect_writedvd.sh
#!/bin/sh
#
# This script will be called by the vdr-plugin dvdselect
# to write a dvd iso image.
#
# It gets the following parameter:
#
# $1 = filename of the iso file
#
# Erweiterung: 2005-01-18 Claus.Thiemann (at) gmx.de
# Nutzung eines installierten vdrconvert zum Brennen
# Die Variablen muessen an die verwendete Distribution angepasst werden
 
BASENAME="$(basename $0)"
CONF=/etc/vdr/vdrconvert/vdrconvert.dvd.conf
ISO="$1"
JOB=/var/spool/vdrconvert/burn
SVDRP=/usr/lib/vdr/svdrpsend.pl
 
function f_check_file() {
# Gibts die Datei?
[ -s $1 ] && return 0
# Meldung ausgeben auf TV und SysLog
MSG="$1 nicht gefunden"
# und zwar im Hintergrund wegen Broken Pipe Problem
$SVDRP MESG $MSG > /dev/null &
echo $MSG ; sleep 3
return 1
}
 
function f_check_job() {
# Gibts die Datei noch nicht oder ist sie leer?
[ -s $1 ] || return 0
MSG="$1 ist nicht leer"
$SVDRP MESG $MSG > /dev/null &
echo $MSG ; sleep 3
return 1
}
 
function f_init_burn() {
# "Sourcen" der Konfiguration
. $CONF
[ -z "$CDSIZE" ] && CDSIZE=700
SIZE=$(ls -al $ISO | awk '{print $5}')
SIZE=$[$SIZE/1048576]
[ $SIZE -le $CDSIZE ] && TYP="MINIDVD" || TYP="DVD"
[ $MINIDVD != "yes" ] && TYP="DVD"
MSG="$(basename $ISO) ($SIZE MB) wird als $TYP gebrannt..."
$SVDRP MESG $MSG > /dev/null &
echo $MSG ; sleep 3
echo "$ISO:$TYP:" > $JOB
return 0
}
 
f_main() {
f_check_file $SVDRP || return
f_check_file $CONF || return
f_check_file $ISO || return
f_check_job $JOB || return
f_init_burn
}
 
# Aufruf der Haupt-Funktion mit oder ohne Syslog
#f_main
f_main | logger -i -t $BASENAME
 
# EOF


File
$PATH/dvdselect_writedvd.sh
#!/bin/sh
#
# This script will by called by the vdr-plugin dvdselect to copy a DVD to
# write a dvd iso image.
#
# It gets the following parameter:
#
# $1 = filename of the iso file
#
# 10/10/2006 - st_barszus.at.gmx.de - thanks to wilderigel, Bert etc at vdrportal  :-) 
# * made sure that we don't give more then 32 as Volume name for dvd direcory
#
# Extended write/burn script for dvdselect and dvdswitch
#
######################################

SVDRPSEND=/usr/lib/vdr/svdrpsend.pl
DVDWRITER=/dev/hdd

######################################

cleanup () {
$SVDRPSEND mesg "$1"
logger -t $0 "$1"
logger -t $0 < $CHECKFILE
rm -f $CHECKFILE
eject $DVDWRITER
exit 0
}

isminusrw () {
MEDIA="`grep "^ Mounted Media" $CHECKFILE | cut -d" " -f13`"
 [ -z $MEDIA ] && cleanup
 [ "$MEDIA" = "DVD-RW" ] && return 0 || return 1
}

isplusrw () {
MEDIA="`grep "^ Mounted Media" $CHECKFILE | cut -d" " -f13`"
 [ -z $MEDIA ] && cleanup
 [ "$MEDIA" = "DVD+RW" ] && return 0 || return 1
}


dvd_isempty () {
USED="`grep "^ Disc status" $CHECKFILE | cut -d":" -f2 | sed -e ' s/ //g'`"

case $USED in
        blank|appendable)
                return 0 ;;
        *)
                return 1 ;;
esac
}


have_media () {
[ -z "`grep \"^:-( no media\" $CHECKFILE`" ] && return 0 || return 1
}

### start skript
# close if the drive is open
eject -t $DVDWRITER

# what is in the drive ?
CHECKFILE=`mktemp`
dvd+rw-mediainfo $DVDWRITER &> $CHECKFILE

if ! have_media ; then
        cleanup "No Media found."
fi

if ! dvd_isempty ; then
        if isminusrw ; then
                # only DVD-RW need to be formated again, DVD+RW can get just overwritten
                echo " ( dvd+rw-format $DVDWRITER -force ) " | at now
        else
                if ! isplusrw ; then
                        cleanup  "Media full. Insert empty media."
                fi
        fi
fi

if [ -d "$1" ]; then
        NAME="`basename \"$1\"`"

        # write dvd structure
        echo "while [ \"x`pgrep -o dvd.rw`\" != \"x\" ] ;do sleep 2; done && growisofs -use-the-force-luke=tty -dvd-compat -Z $DVDWRITER -dvd-video -V \"
${NAME:0:31}\" \"$1\" && eject " | at now
else
        if [ -f "$1" ]; then
                # write dvd image
                echo "while [ \"x`pgrep -o dvd.rw`\" != \"x\"] ;do sleep 2; done && growisofs -dvd-compat -use-the-force-luke=tty -Z $DVDWRITER=\"$1\" &&
 eject " | at now
        else
                cleanup "File: \"$1\" not found."
        fi
fi

# cleanup after all was successfull
$SVDRPSEND mesg  "Start writing to media."
rm -f $CHECKFILE