Dvdselect writedvd.sh

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(9 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
#!/bin/sh
+
Skripte vom [[dvdselect-plugin]].
#
+
 
# dvdselect_writedvd.sh - v.0.1
+
{{Box Datei | [[Struktur|$PATH]]/dvdselect_writedvd.sh |
#
+
<pre>
# source: [[dvdselect-plugin]]
+
#!/bin/sh
#
+
#
# This script will by called by the vdr-plugin dvdselect to copy a DVD to
+
# dvdselect_writedvd.sh
# write a dvd iso image.
+
#
#
+
# source: dvdselect-plugin
# It gets the following parameter:
+
#
#
+
# This script will by called by the vdr-plugin dvdselect to copy a DVD to
# $1 = filename of the iso file
+
# 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" | at now
+
echo "dvdrecord -eject -v dev=0,0,0 speed=4 -dao $1 > /var/log/vdr/writedvd.log 2>&1" | at now
 +
</pre>
 +
}}
  
#!/bin/sh
+
{{Box Datei | [[Struktur|$PATH]]/dvdselect_writedvd.sh |
#
+
<pre>
# source: http://www.hoochvdr.info
+
#!/bin/sh
#
+
#
# $1 = filename of the iso file
+
# source: http://www.hoochvdr.info
 +
#
 +
# $1 = filename of the iso file
 
   
 
   
DVD_RECORDCMD="growisofs"
+
DVD_RECORDCMD="growisofs"
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
+
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
DVDWRITER=/dev/hdc
+
DVDWRITER=/dev/hdc
 
   
 
   
echo " \
+
echo " \
unset SUDO_COMMAND ; \
+
unset SUDO_COMMAND ; \
svdrpsend.pl -d localhost "MESG DVD burn initiated" 2>/dev/null 1>/dev/null ; \
+
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 ; \
+
svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null ; \
exec $DVD_RECORDCMD $DVDPLUS_RECORD_OPTS $DVDWRITER=$1 ; \
+
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 "MESG DVD burn completed" 2>/dev/null 1>/dev/null ; \
svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null ; \
+
svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null ; \
"| at now
+
"| at now
 +
</pre>
 +
}}
  
#!/bin/sh
+
{{Box Datei | [[Struktur|$PATH]]/dvdselect_writedvd.sh |
#
+
<pre>
# source: http://www.hoochvdr.info
+
#!/bin/sh
#
+
#
# Angepasst für LinVDR 0.7, da es kein at-Kommando gibt
+
# source: http://www.hoochvdr.info
# Modified for LinVDR 0.7, because there is no at-command available
+
#
#
+
# Angepasst für LinVDR 0.7, da es kein at-Kommando gibt
# $1 = filename of the iso file
+
# Modified for LinVDR 0.7, because there is no at-command available
 +
#
 +
# $1 = filename of the iso file
 
   
 
   
DVD_RECORDCMD="growisofs"
+
DVD_RECORDCMD="growisofs"
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
+
DVDPLUS_RECORD_OPTS="-dvd-compat -Z"
DVDWRITER=/dev/hdc
+
DVDWRITER=/dev/hdc
 
   
 
   
echo " \
+
echo " \
svdrpsend.pl -d localhost "MESG DVD brennen gestartet" 2>/dev/null 1>/dev/null ; \
+
svdrpsend.pl -d localhost "MESG DVD brennen gestartet" 2>/dev/null 1>/dev/null ; \
$DVD_RECORDCMD $DVDPLUS_RECORD_OPTS $DVDWRITER=\"$1\" ; \
+
$DVD_RECORDCMD $DVDPLUS_RECORD_OPTS $DVDWRITER=\"$1\" ; \
svdrpsend.pl -d localhost "MESG DVD fertig" 2>/dev/null 1>/dev/null ; \
+
svdrpsend.pl -d localhost "MESG DVD fertig" 2>/dev/null 1>/dev/null ; \
" > /tmp/dvdselect-burn-temp.sh
+
" > /tmp/dvdselect-burn-temp.sh
 
   
 
   
chmod 700 /tmp/dvdselect-burn-temp.sh
+
chmod 700 /tmp/dvdselect-burn-temp.sh
/tmp/dvdselect-burn-temp.sh &
+
/tmp/dvdselect-burn-temp.sh &
 +
</pre>
 +
}}
 +
 
 +
{{Box Datei | [[Struktur|$PATH]]/dvdselect_writedvd.sh |
 +
<pre>
 +
#!/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
 +
</pre>
 +
}}
 +
 
 +
{{Box Datei | [[Struktur|$PATH]]/dvdselect_writedvd.sh |
 +
<pre>
 +
#!/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
 +
</pre>
 +
}}
  
[[Kategorie:Scripts]]
+
[[Kategorie:Skripte]]
 +
{{i18n|Dvdselect writedvd.sh}}

Aktuelle Version vom 2. Dezember 2013, 17:48 Uhr

Skripte vom dvdselect-plugin.

Datei
$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


Datei
$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


Datei
$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 &


Datei
$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


Datei
$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
In anderen Sprachen