summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-system/myth2mkv
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/LinHES-system/myth2mkv')
-rw-r--r--abs/core/LinHES-system/myth2mkv105
1 files changed, 69 insertions, 36 deletions
diff --git a/abs/core/LinHES-system/myth2mkv b/abs/core/LinHES-system/myth2mkv
index aedccff..1352476 100644
--- a/abs/core/LinHES-system/myth2mkv
+++ b/abs/core/LinHES-system/myth2mkv
@@ -2,13 +2,14 @@
#
# Convert video to AVC-1 / h264
#
-# version 0.25-004
+# version 0.27-001
#
# Prerequisites:
-# - mythtv >= 0.25
+# - mythtv >= 0.27
# - handbrake-cli
# - mplayer
# - mkvtoolnix
+# - jobqueue_helper.py
#
# Arguments
# $1 must be the directory/file of the recording
@@ -20,7 +21,9 @@
# $7 must be quality of encode
#
# As a MythTV user job:
-# myth2mkv "%DIR%/%FILE%" "%CHANID%" "%STARTTIME%" "%TITLE%" "%SUBTITLE%" "%JOBID%" HQ|MQ|LQ
+# myth2mkv "%DIR%/%FILE%" "%CHANID%" "%STARTTIME%" "%TITLE%" "%SUBTITLE%" "%JOBID%" "HP|HQ|MQ|LQ"
+# Select only 1 quality setting
+# HP is similar to the HandBrake built-in preset High Profile
########################
# #
@@ -47,12 +50,13 @@ TUNING=""
# Crop 160 pixels off the left and right for 4:3 image in 1280x720 frame
# <T:B:L:R>
# i.e. 0:0:240:240
-# Default: In HQ: CROP="0:0:0:0" (no cropping).
+# Default: In HP and HQ: CROP="0:0:0:0" (no cropping).
# IN MQ and LQ: autocrop.
CROP=""
# Force custom output resolution.
# Default: Keep same resolution as input file (less any cropping).
+# The HP quality setting always keeps the same resolution as the input file.
WIDTH=""
HEIGHT=""
@@ -69,15 +73,6 @@ DEINT="G"
# #
############################
-if [[ -e $HOME/.mythtv/mysql.txt ]] ; then
- . $HOME/.mythtv/mysql.txt
-else
- DBHostName=${DBHostName:-"localhost"}
- DBUserName=${DBUserName:-"mythtv"}
- DBPassword=${DBPassword:-"mythtv"}
- DBName=${DBName:-"mythconverg"}
-fi
-
if [[ ! -d ${TMPDIR} ]] ; then
mkdir -p ${TMPDIR}
fi
@@ -91,8 +86,7 @@ update_comment()
# Arg_1 = COMMENT
{
if [ ${NO_JOBID} -eq 0 ]; then
- SQL_CMD="update jobqueue set comment=\"${1}\" where id=\"${JOBID}\";"
- `${MYSQLCMD} "${SQL_CMD}"`
+ `jobqueue_helper.py -j ${JOBID} -cs "${1}"`
fi
}
@@ -101,17 +95,16 @@ check_background_progress()
{
while [ `tail -2 ${STATUSFILE} | grep -c "^HandBrake has exited"` = 0 ]
do
- sleep 10
+ sleep 15
check_myth_jobcmds
- pass=`tail -1 ${STATUSFILE} | egrep -o -e 'task [0-9]' | tail -1 | sed 's/task\ //g'`
+ pass=`tail -1 ${STATUSFILE} | egrep -o -e 'task [0-9] of [0-9], ' | tail -1 | sed 's/task\ /Pass\ /g'`
prog_percent=`tail -1 ${STATUSFILE} | egrep -o -e '[0-9]*\.[0-9]. %' | tail -1 | sed 's/\ %//g'`
current_FPS=`tail -1 ${STATUSFILE} | egrep -o -e 'avg [0-9.]*\.[0-9]* fps' | tail -1 | sed -e 's/avg\ //g' -e 's/\ fps//g'`
current_ETA=`tail -1 ${STATUSFILE} | egrep -o -e 'ETA [0-9.][0-9.]h[0-9.][0-9.]m[0-9.][0-9.]s' | tail -1`
if [ -n "$prog_percent" ]; then
- echo "Pass ${pass}, ${prog_percent}% @ ${current_FPS} fps. ${current_ETA}"
- update_comment "Pass ${pass} of 2, ${prog_percent}% @ ${current_FPS} fps. ${current_ETA}"
+ echo "${pass}${prog_percent}% @ ${current_FPS} fps. ${current_ETA}"
+ update_comment "${pass}${prog_percent}% @ ${current_FPS} fps. ${current_ETA}"
fi
- sleep 10
done
}
@@ -119,24 +112,24 @@ check_myth_jobcmds()
# check the myth database for stop pause or resume commands
{
if [[ ${NO_JOBID} -eq 0 ]] ; then
- CURRENT_CMD=`${MYSQLCMD} "select cmds from jobqueue where id = \"${JOBID}\";"`
+ CURRENT_CMD=`jobqueue_helper.py -m "select cmds from jobqueue where id = ${JOBID}"`
case "${CURRENT_CMD}" in
# JOB_RUN
0) ;;
# JOB_PAUSE
- 1) `${MYSQLCMD} "update jobqueue set status=\"6\" where id=\"${JOBID}\";"`
+ 1) `jobqueue_helper.py -j ${JOBID} -ss 6`
kill -s STOP ${handbrake_pid} ;;
# JOB_RESUME
- 2) `${MYSQLCMD} "update jobqueue set status=\"4\" where id=\"${JOBID}\";"`
- `${MYSQLCMD} "update jobqueue set cmds=\"0\" where id=\"${JOBID}\";"`
+ 2) `jobqueue_helper.py -j ${JOBID} -ss 4`
+ `jobqueue_helper.py -j ${JOBID} -cmds 0`
kill -s CONT ${handbrake_pid} ;;
# JOB_STOP
- 4) `${MYSQLCMD} "update jobqueue set status=\"5\" where id=\"${JOBID}\";"`
- `${MYSQLCMD} "update jobqueue set cmds=\"0\" where id=\"${JOBID}\";"`
+ 4) `jobqueue_helper.py -j ${JOBID} -ss 5`
+ `jobqueue_helper.py -j ${JOBID} -cmds 0`
kill -9 ${handbrake_pid} ${command_pid}
clean_up_files
echo "Encode Cancelled" >> ${LOGFILE}
- `${MYSQLCMD} "update jobqueue set status=\"320\" where id=\"${JOBID}\";"`
+ `jobqueue_helper.py -j ${JOBID} -ss 320`
exit ;;
esac
fi
@@ -200,7 +193,14 @@ if [[ -n ${HEIGHT} ]] ; then
HEIGHT="-l ${HEIGHT} -Y ${HEIGHT}"
fi
-if [[ ${QUALITY} = HQ ]] ; then
+if [[ ${QUALITY} = HP ]] ; then
+ if [[ -n ${CROP} ]] ; then
+ CROP="--crop ${CROP}"
+ else
+ CROP="--crop 0:0:0:0 --strict-anamorphic"
+ fi
+ HB_OPTS="-o ${TMPFILE} -e x264 ${TUNING} -q 20.0 -a 1,1 -E copy:ac3,faac -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mkv --decomb --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 4.1 ${CROP} -s 1"
+elif [[ ${QUALITY} = HQ ]] ; then
if [[ -n ${CROP} ]] ; then
CROP="--crop ${CROP}"
else
@@ -260,10 +260,18 @@ echo " <Simple>" >> "${TAG_FILE}"
echo " <Name>DATE_RELEASED</Name>" >> "${TAG_FILE}"
echo " <String>${OAD}</String>" >> "${TAG_FILE}"
echo " </Simple>" >> "${TAG_FILE}"
+echo " <Simple>" >> "${TAG_FILE}"
+echo " <Name>SEASON</Name>" >> "${TAG_FILE}"
+echo " <String>${SEASON}</String>" >> "${TAG_FILE}"
+echo " </Simple>" >> "${TAG_FILE}"
+echo " <Simple>" >> "${TAG_FILE}"
+echo " <Name>EPISODE</Name>" >> "${TAG_FILE}"
+echo " <String>${EPISODE}</String>" >> "${TAG_FILE}"
+echo " </Simple>" >> "${TAG_FILE}"
echo " </Simple>" >> "${TAG_FILE}"
echo " </Simple>" >> "${TAG_FILE}"
echo " <Simple>" >> "${TAG_FILE}"
-echo " <Name>ENCODER</Name>" >> "${TAG_FILE}"
+echo " <Name>ENCODED_BY</Name>" >> "${TAG_FILE}"
echo " <String>HandBrakeCLI ${HBCLIVER}</String>" >> "${TAG_FILE}"
echo " </Simple>" >> "${TAG_FILE}"
echo " <Simple>" >> "${TAG_FILE}"
@@ -308,9 +316,12 @@ STATUSFILE=/tmp/${TMPNAME}-status.log
HB_RETURN_CODE=/tmp/${TMPNAME}-hb_return_code
IDFILE=/tmp/${TMPNAME}-id.txt
TAG_FILE=/tmp/${TMPNAME}.xml
-MYSQLCMD="mysql -B --skip-column-names -u ${DBUserName} -p${DBPassword} -h ${DBHostName} -D ${DBName} -e"
-OAD=`${MYSQLCMD} "select originalairdate from recorded where basename LIKE '${BASE}';"`
-DESCR=`${MYSQLCMD} "select description from recorded where basename LIKE '${BASE}';" | sed 's/\&/and/g'`
+SEASON=`jobqueue_helper.py -m "select season from recorded where basename LIKE '${BASE}'"`
+SEASON=`printf "%02d" $SEASON`
+EPISODE=`jobqueue_helper.py -m "select episode from recorded where basename LIKE '${BASE}'"`
+EPISODE=`printf "%02d" $EPISODE`
+OAD=`jobqueue_helper.py -m "select originalairdate from recorded where basename LIKE '${BASE}'"`
+DESCR=`jobqueue_helper.py -m "select description from recorded where basename LIKE '${BASE}'" | sed 's/\&/and/g'`
USER=`whoami`
# check if %JOBID% is passed from command line
@@ -392,7 +403,11 @@ fi
# make output filename unique and do not clobber an existing file
# Build a final file name
-FILE=$( echo "${TITLE,,} ${OAD} ${SUBTITLE,,}" | tr -d [:punct:] | tr [:blank:] "_" | tr -s "_" )
+if [[ $SEASON != "00" && $EPISODE != "00" ]]; then
+ FILE=$( echo "${TITLE,,} s${SEASON}e${EPISODE} ${SUBTITLE,,}" | tr -d [:punct:] | tr [:blank:] "_" | tr -s "_" )
+else
+ FILE=$( echo "${TITLE,,} ${OAD} ${SUBTITLE,,}" | tr -d [:punct:] | tr [:blank:] "_" | tr -s "_" )
+fi
OUTPUTFILE="${OUTDIR}/${FILE}.mkv"
i=1
while [ -e "${OUTPUTFILE}" ]
@@ -422,9 +437,27 @@ if [ ${ERROR} -eq 0 ]; then
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}
- `${MYSQLCMD} "update jobqueue set status = \"272\" where id = \"${JOBID}\";"`
- update_comment "Encode Successful. Encoding Time: ${hours} hour\(s\) ${minutes} minute\(s\) ${seconds} second\(s\)"
+ if [ $hours -eq 0 ]; then
+ hours=""
+ elif [ $hours -eq 1 ]; then
+ hours=" $hours hour"
+ else
+ hours=" $hours hours"
+ fi
+ if [ $minutes -eq 1 ]; then
+ minutes="$minutes minute"
+ else
+ minutes="$minutes minutes"
+ fi
+ if [ $seconds -eq 1 ]; then
+ seconds="$seconds second"
+ else
+ seconds="$seconds seconds"
+ fi
+
+ echo "Encoding took${hours} ${minutes} ${seconds} @ ${current_FPS} fps." >> ${LOGFILE}
+ `jobqueue_helper.py -j ${JOBID} -ss 272`
+ update_comment "Encode Successful. Encoding Time:${hours} ${minutes} ${seconds}"
else
echo "ERROR: ${ERROR}" >> ${LOGFILE}
fi