summaryrefslogtreecommitdiffstats
path: root/linhes/linhes-system/myth2videos
diff options
context:
space:
mode:
Diffstat (limited to 'linhes/linhes-system/myth2videos')
-rwxr-xr-xlinhes/linhes-system/myth2videos148
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