Hello,
Ok forsome reason this script will not convert the rm stream to an mp3 if it runs in the cron. Can someone point me in the right direction on how to fix this.
The script is as follows:
------------------------------------------------ #!/bin/bash
DATE=`date +%A` SHOWNAME=$1 TSPLIT=$4 ALBUM=$2 DIR="/usr/local/bin/bbc_radio1" RECORDINGPATH=${DIR}/ WEBDIR=/var/www/bbc/ DURATION=$3 DURATION=`expr $DURATION * 60` ATTIME=`expr $3 + 5` BITRATE="64" HISTORY=${WEBDIR}/history.log
_record() { echo "--------------------------" >> $HISTORY echo "Start REC:" `date` >> $HISTORY echo " Recording" $SHOWNAME >> $HISTORY echo " Length:" `expr $DURATION / 60 ` "minutes" >> $HISTORY
cd ${RECORDINGPATH} mplayer -dumpstream "-playlist" http://www.bbc.co.uk/radio1/realaudio/media/r1live.ram -dumpfile ${RECORDINGPATH}${SHOWNAME}.dump -vc dummy -vo null & MPLAYPROCESS=$! echo $MPLAYPROCESS > /tmp/radio1.pid echo " PID:" $MPLAYPROCESS >> $HISTORY Kill process when show finished. at now + $ATTIME minutes <<EOF kill -9 $MPLAYPROCESS EOF sleep $DURATION && echo "sleep finsihed" >> $HISTORY kill -9 $MPLAYPROCESS && echo "PID Killed" >> $HISTORY echo "Stop REC:" `date` >> $HISTORY ls -lh ${RECORDINGPATH}${SHOWNAME}.dump | awk ' { print "Showname: " $8 " Size: "$5 } ' >> $HISTORY }
_convert() { # convert stream to mp3 format echo "Converting Stream to MP3" `date` >> $HISTORY # ffmpeg -i "$RECORDINGPATH$SHOWNAME".dump -f wav - | lame - -b $BITRATE $WEBDIR/${DATE}_"$SHOWNAME".mp3 #mencoder "$RECORDINGPATH$SHOWNAME".dump -ovc frameno -oac mp3lame -of rawaudio -lameopts cbr:br=40 -o $WEBDIR/${DATE}_"$SHOWNAME".mp3 ffmpeg -i "$RECORDINGPATH$SHOWNAME".dump -ab $BITRATE $WEBDIR/${DATE}_"$SHOWNAME".mp3 > /tmp/convert.dbg && echo "Conversion done" >> $HISTORY
ls -lh $WEBDIR | grep ${DATE}_"$SHOWNAME".mp3 | awk ' { print "Showname: " $8 " Size: "$5 } '>> $HISTORY echo "--------------------------" >> $HISTORY }
_id3tag() { mp3info -d ${WEBDIR}/${DATE}/*.mp3 mp3info -a $ALBUM -l $SHOWNAME -t $SHOWNAME ${WEBDIR}/${DATE}/*.mp3 echo "ID3tag set" }
_splitmp3() { echo ${TSPLIT} mp3splt -f -t "${TSPLIT}".0 -a ${WEBDIR}${DATE}_"${SHOWNAME}".mp3 >> $HISTORY }
_cleanup() { #Cleanup Files mkdir -p $WEBDIR rm -v "$RECORDINGPATH$SHOWNAME".dump }
_record
_convert
#_splitmp3 #_id3tag
#_cleanup --------------------------------------------
I dont want to convert to a wav then mp3 as the files sizes will be huge for the wav.
I run the script as: xx xx * * * script.sh Show1 BBC 15 5
I understand parts of the script don't work yet but its the conversion I am focusing on. you can see I have tried some other variations of the conversion all fail to work. It only converts for a small time before stopping.
Thanks
Paul Ward wrote:
Hello,
Ok forsome reason this script will not convert the rm stream to an mp3 if it runs in the cron. Can someone point me in the right direction on how to fix this.
The script is as follows:
...
Most often, these issues of running from command line, but not running from cron, are environment related.
To test this, run your script once using at instead of cron, ie:
at now + 1 minute at> script at><CNTRL>d
If that works, then its the envoronment, and you can 'cheat' to make cron work. Here is how:
Repeat the above at command, but this time give it 2 or three minutes. Long enough for you to 'find' the atjob.
$ su -
# cd /var/spool/at # ls
You will notice at least one file here with a filename in the form of: a00001013b0cd1
This is a script that 'at' created, and it includes your complete environment as of when 'at' was executed.
Copy this script to some place before it runs and gets removed, ie:
# cp a00001013b0cd1 /tmp/template_script.sh # chown myuser:mygroup /tmp/template_script.sh
You now have a template you can use for cronjobs that require a user environment to run.
Good Luck!
Nice one, that seems like a very logical way to do it. I did try running from the at command and yes it did work.
I will check the env out.
Cheers
2009/4/4 Phil Meyer pmeyer@themeyerfarm.com:
Paul Ward wrote:
Hello,
Ok forsome reason this script will not convert the rm stream to an mp3 if it runs in the cron. Can someone point me in the right direction on how to fix this.
The script is as follows:
...
Most often, these issues of running from command line, but not running from cron, are environment related.
To test this, run your script once using at instead of cron, ie:
at now + 1 minute at> script at><CNTRL>d
If that works, then its the envoronment, and you can 'cheat' to make cron work. Here is how:
Repeat the above at command, but this time give it 2 or three minutes. Long enough for you to 'find' the atjob.
$ su -
# cd /var/spool/at # ls
You will notice at least one file here with a filename in the form of: a00001013b0cd1
This is a script that 'at' created, and it includes your complete environment as of when 'at' was executed.
Copy this script to some place before it runs and gets removed, ie:
# cp a00001013b0cd1 /tmp/template_script.sh # chown myuser:mygroup /tmp/template_script.sh
You now have a template you can use for cronjobs that require a user environment to run.
Good Luck!
-- fedora-list mailing list fedora-list@redhat.com To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines