diff options
Diffstat (limited to 'abs/core-testing/linhes-scripts/removecommercials.sh')
-rwxr-xr-x | abs/core-testing/linhes-scripts/removecommercials.sh | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/abs/core-testing/linhes-scripts/removecommercials.sh b/abs/core-testing/linhes-scripts/removecommercials.sh deleted file mode 100755 index 0497dd5..0000000 --- a/abs/core-testing/linhes-scripts/removecommercials.sh +++ /dev/null @@ -1,233 +0,0 @@ -#!/bin/sh -# remove commercials from recordings using the user generated cutlist or -# optionally using the mythcommflag generated cutlist. -# version 0.3 9/1/2010 - -# usage: -# first parameter must be %DIR% of the recording -# second parameter must be %FILE% of the recording -# third parameter must be %CHANID% -# fourth parameter must be %STARTTIME% -# 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/LH/bin/removecommercials.sh "%DIR%" "%FILE%" "%CHANID%" "%STARTTIME%" "%JOBID%" - -#-------OPTIONS---------------- -# If no cutlist is found USE_MYTHCOMMFLAG_CUTLIST=YES will use mythcommflag -# to generate a cutlist. -# WARNING: Using this option could result in part of the recording being cut if -# mythcommflag incorrectly flagged the commercial. -# The USE_MYTHCOMMFLAG_CUTLIST option is saved in ~/.removecommercials.cfg and will -# not be overwritten by updates to this script. The ~/.removecommercials.cfg -# will be created by this script if it doesn't exist. -# To enable set USE_MYTHCOMMFLAG_CUTLIST=YES in ~/.removecommercials.cfg - -[[ ! -f ~/.removecommercials.cfg ]] && printf "# If no cutlist is found USE_MYTHCOMMFLAG_CUTLIST=YES will use mythcommflag\n# to generate a cutlist.\n# WARNING: Using this option could result in part of the recording being cut if\n# mythcommflag incorrectly flagged the commercial.\nUSE_MYTHCOMMFLAG_CUTLIST=NO" > ~/.removecommercials.cfg -. ~/.removecommercials.cfg - -# Auguments passed from command line -VIDEODIR=$1 -FILENAME=$2 -CHANID=$3 -STARTTIME=$4 -JOBID=$5 - -# database settings -BACKEND_HOSTNAME=${BACKEND_HOSTNAME:-"localhost"} -DBUSERNAME=${DBUSERNAME:-"mythtv"} -DBPASSWORD=${DBPASSWORD:-"mythtv"} -SQLCMD="mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e" - -LOG="/dev/null" -#LOG="/var/log/mythtv/removecommercials.log" - -#------FUNCTIONS--------------- -update_comment() -# Arg_1 = COMMENT -{ -if [ $NO_JOBID = 0 ]; then - `$SQLCMD "update jobqueue set comment=\"$1\" where id=\"$JOBID\";"` -fi -} - -update_status() -# Arg_1 = status code -{ -if [ $NO_JOBID = 0 ]; then - `$SQLCMD "update jobqueue set status=\"$1\" where id=\"$JOBID\";"` -fi -} - -check_myth_jobcmds() -# check the myth database for stop pause or resume commands -{ -if [ $NO_JOBID = 0 ]; then - CURRENT_CMD=`$SQLCMD "select cmds from jobqueue where id=\"$JOBID\";" | sed '/[0-9]/!d'` - case "$CURRENT_CMD" in - # JOB_RUN - 0) ;; - # JOB_PAUSE - 1) update_status 6 - kill -s STOP $TPID ;; - # JOB_RESUME - 2) update_status 4 - `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` - kill -s CONT $TPID ;; - # JOB_STOP - 4) update_status 5 - `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` - kill -9 $TPID - clean_up_files - echo "Cancelled" - update_status 320 - exit ;; - esac -fi -} - -check_background_progress() -#check progress in background -{ -while [ `tail -1 $STATUSFILE | grep -c "Done"` = 0 ] -do - sleep 5 - check_myth_jobcmds - current_status=`tail -1 $STATUSFILE` - if [ `expr match "$current_status" '.*\complete'` -ne 0 ]; then - prog_percent=`echo "$current_status" | awk '{print $3}'` - if [ -n "$prog_percent" ]; then - echo "Removing Commercials - $prog_percent Completed" - update_comment "Removing Commercials - $prog_percent Completed" - fi - fi -done -} - -get_pid() -{ -process_name="" -i1=1 -while [ "$process_name" != "found" ]; do - if [ "`ps $TPID | grep mythtranscode | sed 's_.*\(mythtranscode\).*_\1_'`" = "mythtranscode" ]; then - process_name="found" - else - TPID=`expr $TPID + 1` - fi - i1=`expr $i1 + 1` - if [ $i1 -gt 20 ]; then - break - fi -done -} - -clean_up_files() -# clean up left over files -{ -unlink $TMPFILE 2> /dev/null -unlink $TMPFILE.map 2> /dev/null -unlink $STATUSFILE 2> /dev/null -unlink $VIDEODIR/$FILENAME.tmp 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 -# check if file is a .mpg -if [ `expr match "$FILENAME" '.*\.mpg'` -ne 0 ]; then - MPEG="--mpeg2" -else - MPEG="" -fi - -# create temp filename so multiple instances won't conflict -TMPNAME=rmvCOMMS-$$ -TMPFILE=$VIDEODIR/$FILENAME-$$ -STATUSFILE=/myth/tmp/$TMPNAME-status.log - -touch $STATUSFILE - -update_status 4 - -check_myth_jobcmds - -echo "" >> $LOG -date >> $LOG -$VIDEODIR/$FILENAME >> $LOG - -# check for cutlist -MYTHCOMMFRAMES=`mythcommflag --getcutlist -f $VIDEODIR/$FILENAME | grep 'Cutlist:' | cut -d \ -f 2` - -if [ $USE_MYTHCOMMFLAG_CUTLIST=YES ] && [ -z "$MYTHCOMMFRAMES" ]; then - echo "Generating cutlist..." >> $LOG - update_comment "Generating cutlist..." - /usr/bin/nice -n19 /usr/bin/mythcommflag --gencutlist -f $VIDEODIR/$FILENAME - MYTHCOMMFRAMES=`mythcommflag --getcutlist -f $VIDEODIR/$FILENAME | grep 'Cutlist:' | cut -d \ -f 2` -fi - -if [ -n "$MYTHCOMMFRAMES" ]; then - echo "Removing Commercials..." >> $LOG - update_comment "Removing Commercials..." - ( /usr/bin/nice -n19 /usr/bin/mythtranscode -c $CHANID -s $STARTTIME -o $TMPFILE $MPEG --honorcutlist --showprogress > $STATUSFILE 2>&1 ; echo "Done" >> $STATUSFILE ) & - TPID=$! - get_pid - check_background_progress - ERROR=$? - if [ $ERROR -ne 0 ]; then - echo "Transcoding failed for ${FILENAME} with error $ERROR" >> $LOG - exit $ERROR - fi - - check_myth_jobcmds - # move temp file to output location - echo "Moving file..." >> $LOG - update_comment "Moving file..." - if [ `$SQLCMD "select data from settings where value='SaveTranscoding';" | sed '/[0-9]/!d'` = 1 ]; then - echo "DB is set to save transcoding" >> $LOG - mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old - fi - mv $TMPFILE $VIDEODIR/$FILENAME - - # file has changed, rebuild index - echo "Rebuilding index..." >> $LOG - update_comment "Rebuilding index..." - mythcommflag -c $CHANID -s $STARTTIME --rebuild - ERROR=$? - if [ $ERROR -ne 0 ]; then - echo "Rebuilding seek list failed for ${FILENAME} with error $ERROR" >> $LOG - exit $ERROR - fi - - # remove old cutlist - echo "Removing old cutlist..." >> $LOG - update_comment "Removing old cutlist..." - mythcommflag -c $CHANID -s $STARTTIME --clearcutlist - ERROR=$? - if [ $ERROR -eq 0 ]; then - # Fix the database entry for the file - echo "Fixing database entry..." >> $LOG - `$SQLCMD "UPDATE recorded SET cutlist = 0, filesize = $(ls -l $VIDEODIR/$FILENAME | awk '{print $5}') WHERE basename = '$FILENAME';"` > /dev/null - else - echo "Clearing cutlist failed for ${FILENAME} with error $ERROR" >> $LOG - clean_up_files - update_status 272 - update_comment "Error: Clearing cutlist failed." - exit $ERROR - fi - - # clear autoskip list - echo "Clearing autoskip list..." >> $LOG - `$SQLCMD "DELETE FROM recordedmarkup WHERE CONCAT( chanid, starttime ) IN (SELECT CONCAT( chanid, starttime ) FROM recorded WHERE basename = '$FILENAME');"` > /dev/null - - clean_up_files - echo "Commercials Removed" >> $LOG - update_status 272 - update_comment "Sucessfully Completed." -else - echo "No cutlist found." >> $LOG -fi |