Dvdselect writedvd.sh

From VDR Wiki
Revision as of 17:12, 11 February 2014 by Wirbel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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