diff options
Diffstat (limited to 'linhes/linhes-system/myth2videos')
-rwxr-xr-x | linhes/linhes-system/myth2videos | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/linhes/linhes-system/myth2videos b/linhes/linhes-system/myth2videos new file mode 100755 index 0000000..c4d3246 --- /dev/null +++ b/linhes/linhes-system/myth2videos @@ -0,0 +1,148 @@ +#!/bin/sh +# copy recording to videos +# version 0.3 + +# usage: +# first parameter must be %DIR%/%FILE% of the recording +# second parameter must be the desired base name of the output +# third parameter must be %CHANID% if you set USECUTLIST=Y +# fourth parameter must be %STARTTIME% if you set USECUTLIST=Y +# fifth parameter must be %JOBID% for the User Job status to be updated in MythTV +# in the mythtv setup screen invoke this script like this: +# MYTHTV User Job Command: +# /usr/bin/myth2videos "%DIR%/%FILE%" "%TITLE% - %SUBTITLE%" "%CHANID%" "%STARTTIME%" "%JOBID%" + +# options: +USECUTLIST=Y # Y or N + +# where the video is stored +OUT_DIR=/data/storage/disk0/media/video + + +#------FUNCTIONS--------------- +update_comment() +# Arg_1 = COMMENT +{ +if [ $NO_JOBID -eq 0 ]; then + `jobqueue_helper.py -j ${JOBID} -cs "${1}"` +fi +} + +update_status() +# Arg_1 = status code +{ +if [ $NO_JOBID -eq 0 ]; then + `jobqueue_helper.py -j ${JOBID} -cs "${1}"` +fi +} + +check_myth_jobcmds() +# check the myth database for stop pause or resume commands +{ +if [ $NO_JOBID -eq 0 ]; then + CURRENT_CMD=`jobqueue_helper.py -m "select cmds from jobqueue where id = ${JOBID}"` + case "$CURRENT_CMD" in + # JOB_RUN + 0) ;; + # JOB_PAUSE + 1) `jobqueue_helper.py -j ${JOBID} -ss 6`;; + # JOB_RESUME + 2) `jobqueue_helper.py -j ${JOBID} -ss 4` + `jobqueue_helper.py -j ${JOBID} -cmds 0`;; + # JOB_STOP + 4) `jobqueue_helper.py -j ${JOBID} -ss 5` + `jobqueue_helper.py -j ${JOBID} -cmds 0` + clean_up_files + echo "Copy Cancelled" >> $LOGFILE + `jobqueue_helper.py -j ${JOBID} -ss 320` + exit ;; + esac +fi +} + +clean_up_files() +# clean up left over files +{ +unlink $TMPFILE 2> /dev/null +unlink $TMPFILE.map 2> /dev/null +} + +#-------MAIN SCRIPT------------ + +# check if %JOBID% is passed from command line +JOBID=${5} +if [ -z "$JOBID" ]; then + NO_JOBID=1 +else + NO_JOBID=0 +fi + +# create temp filename so multiple instances won't conflict +TMPNAME=toVIDEOS-$$ +TMPFILE=/data/storage/disk0/media/tmp/$TMPNAME.mpg +MENINPUTFILE=$1 +TITLE=`echo $2 | sed 's/\//_/g'` + +# log file location +LOGFILE=/var/log/mythtv/myth2videos.log +CDate="`date`" +echo "" >> $LOGFILE +echo $CDate >> $LOGFILE +echo "File to copy: $MENINPUTFILE Name: $TITLE" >> $LOGFILE +echo "$2 $3 $4 $5" >> $LOGFILE + +# start timer +beforetime="$(date +%s)" + +check_myth_jobcmds + +# check if using cutlist +if [ $USECUTLIST = Y ]; then + MYTHCOMMFRAMES=`mythutil --getcutlist --chanid "$3" --starttime "$4" | grep 'Cutlist:' | cut -d \ -f 2` + echo $MYTHCOMMFRAMES + if [ -n "$MYTHCOMMFRAMES" ]; then + echo "Extracting Cutlist..." >> $LOGFILE + update_comment "Extracting Cutlist..." + /usr/bin/nice -n19 /usr/bin/mythtranscode --chanid "$3" --starttime "$4" --outfile "$TMPFILE" --mpeg2 --honorcutlist + else + update_comment "Copying Recording..." + cp "$MENINPUTFILE" "$TMPFILE" + fi +elif [ $USECUTLIST = N ]; then + update_comment "Copying Recording..." + cp "$MENINPUTFILE" "$TMPFILE" +fi + +# make output filename unique +OUTPUTFILE=$OUT_DIR/$TITLE.mpg +i=1 +while [ -e "$OUTPUTFILE" ] +do + OUTPUTFILE=$OUT_DIR/$TITLE-$i.mpg + i=`expr $i + 1` +done + +# move temp file to output location +chown mythtv "$TMPFILE" && mv "$TMPFILE" "$OUTPUTFILE" + +# stop timer +aftertime="$(date +%s)" +seconds="$(expr $aftertime - $beforetime)" + +ERROR=$? +if [ $ERROR -eq 0 ]; then + echo "File Encoded Successfully: $OUTPUTFILE" >> $LOGFILE + hours=$((seconds / 3600)) + seconds=$((seconds % 3600)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) + echo "Encoding took $hours hour(s) $minutes minute(s) $seconds second(s) @ $current_FPS fps." >> $LOGFILE + update_status 272 + update_comment "Encode Successful. Encoding Time: $hours hour(s) $minutes minute(s) $seconds second(s)" +else + update_status 304 + update_comment "Encode Failed. Exit status: $ERROR" + echo "ERROR: $ERROR" >> $LOGFILE +fi + +clean_up_files |