Hi,
Versuche grade in Morones music Plugin das Script (lag früher dem mp3ng Plugin
Vorgänger von music bei) mit Namen music_burnaudiocd.sh anzupassen
wie ich das gerne hätte.
Dabei gibts aber das Problem (hab zwei Versionen des Scripts erstellt)
wobei die eine Version nur mit cdrdao arbeitet > ich zeig sie mal;
#!/bin/sh
############################################################################
#### Dieses Script brennt mp3s welche in einer Burnlist (burnlist.m3u) ####
#### stehen auf Cd, wobei die mp3s zuvor nach wav Files gewandelt ####
#### werden, denn erst dadurch entsteht eine konforme Audio-Cd die ####
#### in jedem Handelsueblichen Cd-Player abgespielt werden kann ####
#### Es braucht dazu folgende Programme ####
#### mp3cd,cdrdao, und ein paar andere die eh jeder hat ####
############################################################################
## Variablen ##
MP3CD="/usr/bin/mp3cd"
CDRDAO="/usr/bin/cdrdao"
DRIVER="--driver generic-mmc"
CDRDAODEV="--device /dev/cdrw1"
DEVICE="/dev/cdrw1"
NICE="/usr/bin/nice"
SVDRPSEND="/usr/local/bin/svdrpsend.pl"
LOGFILE="/var/lib/vdrmedia/disc_log"
TEMPDIR="/var/lib/vdrmedia/mp3/burning/tmp"
BURNLIST="/var/lib/vdr/plugins/music/playlists/burnlist.m3u"
### Jetzt beginnt der Job !
### Loeschen eventuell vorhandener alter Files (mp3,wav,etc..)
### aus frueheren Umwandlungen
rm -f $TEMPDIR/*
### Logfile der letzten Umwandlung loeschen
if [ -e $LOGFILE ] ; then
rm -f $LOGFILE
fi
### Eingelegten Rohling (Cd-r bzw. Cd-rw) auslesen, und
### das Ergebnis in das LOGFILE schreiben
$CDRDAO disk-info $DRIVER $CDRDAODEV > $LOGFILE
exec >>$LOGFILE; exec 2>&1
### Aus dem LOGFILE auslesen um welchen Rohling es sich
### handelt, falls es eine Cd-r ist wird gleich zu wav
### gewandelt, und danach gebrannt
### Handelt es sich bei dem eingelegten Rohling jedoch
### um eine Cd-rw wird diese (nur fuer den Fall das sie
### nicht leer ist) zuerst noch geloescht
if grep -E -q "^CD-RW : no" $LOGFILE; then
grep -E -q "^CD-R empty : yes" $LOGFILE
if [ "$?" = "0" ] ; then
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
else
$SVDRPSEND MESG 'Abbruch, Cd-r ist nicht leer'
exit 1
fi
fi
if grep -E -q "^CD-RW : yes" $LOGFILE; then
grep -E -q "^CD-R empty : no" $LOGFILE
if [ "$?" = "0" ] ; then
$CDRDAO blank $DRIVER $CDRDAODEV --blank-mode minimal -v 9 --eject && eject -t $DEVICE
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
else
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
fi
fi
exit 0
Alles anzeigen
Das problem bei dieser Version ist der Befehl;
Hier noch derselbe Befehl ohne Variablen;
cdrdao blank --driver generic-mmc --device /dev/cdrw1 --blank-mode minimal -v 9 --eject && eject -t /dev/cdrw1
Also der Befehl wenn sichs um ne Cd-rw handelt und diese nicht leer ist.
Der Befehl wird zwar ausgeführt (aber sehr schnell 6 Sec. fürs löschen?)
, auch die Diode des Cd-Laufwerks leuchtet rot, aber
das Script versagt dann insgesammt, da die Scheibe irgendwie gar nicht gelöscht wurde.
Ein;
cdrdao disk-info --driver generic-mmc --device /dev/cdrw1
zeigt dann auch das die disk nicht emty ist.
So nun die zweite Version des Scripts die dasselbe erledigt
, und so wies aussieht zuverlässig funktioniert.
Diese Version benötigt allerdings zusätzlich cdrecord;
############################################################################
#### Dieses Script brennt mp3s welche in einer Burnlist (burnlist.m3u) ####
#### stehen auf Cd, wobei die mp3s zuvor nach wav Files gewandelt ####
#### werden, denn erst dadurch entsteht eine konforme Audio-Cd die ####
#### in jedem Handelsueblichen Cd-Player abgespielt werden kann ####
#### Es braucht dazu folgende Programme ####
#### mp3cd,cdrdao,cdrecord, und ein paar andere die eh jeder hat ####
############################################################################
## Variablen ##
MP3CD="/usr/bin/mp3cd"
CDRECORD="/usr/bin/cdrecord"
#DRIVER="driver=mmc_cdr"
CDRECORDDEV="dev=/dev/cdrw1"
#CDRECORDDEV="dev=1,0,0"
DEVICE="/dev/cdrw1"
NICE="/usr/bin/nice"
SVDRPSEND="/usr/local/bin/svdrpsend.pl"
LOGFILE="/var/lib/vdrmedia/disc_log"
DISCTYPE="Mounted media type:"
DISKSTATUS="disk status:"
TEMPDIR="/var/lib/vdrmedia/mp3/burning/tmp"
BURNLIST="/var/lib/vdr/plugins/music/playlists/burnlist.m3u"
### Jetzt beginnt der Job !
### Loeschen eventuell vorhandener alter Files (mp3,wav,etc..)
### aus frueheren Umwandlungen
rm -f $TEMPDIR/*
### Logfile der letzten Umwandlung loeschen
if [ -e $LOGFILE ] ; then
rm -f $LOGFILE
fi
### Eingelegten Rohling (Cd-r bzw. Cd-rw) auslesen, und
### das Ergebnis in das LOGFILE schreiben
#$CDRECORD $CDRECORDDEV $DRIVER -media-info > $LOGFILE
$CDRECORD $CDRECORDDEV -media-info > $LOGFILE
exec >>$LOGFILE; exec 2>&1
### Aus dem LOGFILE auslesen um welchen Rohling es sich
### handelt, falls es eine Cd-r ist wird gleich zu wav
### gewandelt, und danach gebrannt
### Handelt es sich bei dem eingelegten Rohling jedoch
### um eine Cd-rw wird diese (nur fuer den Fall das sie
### nicht leer ist) zuerst noch geloescht
grep -E -q "^$DISCTYPE CD-RW" $LOGFILE
if [ "$?" = "0" ] ; then
grep -E -q "^$DISKSTATUS empty" $LOGFILE
if [ "$?" = "0" ] ; then
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
else
#$CDRECORD $CDRECORDDEV $DRIVER blank=fast gracetime=3 -eject && eject -t $DEVICE
$CDRECORD $CDRECORDDEV blank=fast gracetime=3 -eject && eject -t $DEVICE
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
fi
else
$SVDRPSEND MESG 'Brennvorgang gestartet'
$NICE -19 $MP3CD -d $DEVICE -s clean -c '--driver generic-mmc --speed 8' -t $TEMPDIR $BURNLIST && $SVDRPSEND MESG 'Brennvorgang abgeschlossen'
fi
exit 0
Alles anzeigen
Mit dieser Version (was soll ich lange erklären) wird cdrecord statt cdrdao
zum löschen verwendet, und das klappt dann auch (mehrmals getestet).
Daher läuft das Script dann auch durch so wies eben sein soll
Jemand sowas schon gesehen, bzw. an was kann das liegen ?
Irgendwie ist das jedenfalls ärgerlich da man ja damit das funktioniert
ein weiteres Programm (in diesem Fall cdrecord) benötigt.
Auch bedingt die erste Version des Scripts (ohne cdrecord)
ein Folgeproblem, und zwar bleibt der Prozess cdrdao dann bstehen.
Ein;
fuser -uvm /dev/cdrw1
zeigt dann das;
Mit;
kill 30645
lässt sich das dann beenden, was mich zu einer weiteren Frage bringt;
Kann man das in nem Script automatisieren ?
Ich meine man könnte ja den Befehl;
fuser -uvm /dev/cdrw1
in ein Script einbauen, die Ausgabe davon in ein File schreiben lassen
ist ja auch kein Probs aber wie muss man das dann machen das
man die Pid killt per Script, denn die ist ja nicht immer 30645 ?
Gibts da ne Möglichkeit ?
Gruss, Bert