Difference between revisions of "Script - RemoveCommercials"

From MythTV Official Wiki
Jump to: navigation, search
m (Apparently mythcommflag exits with a return code of the number of commercials. Updated the script to reflect this.)
(Rebuild the seek table after transcoding)
Line 25: Line 25:
 
  if [ -z "$VIDEODIR" -o -z "$FILENAME" ]; then
 
  if [ -z "$VIDEODIR" -o -z "$FILENAME" ]; then
 
         echo "Usage: $0 <VideoDirectory> <FileName>"
 
         echo "Usage: $0 <VideoDirectory> <FileName>"
         exit 4
+
         exit 5
 
  fi
 
  fi
 
  if [ ! -f $VIDEODIR/$FILENAME ]; then
 
  if [ ! -f $VIDEODIR/$FILENAME ]; then
 
         echo "File does not exist: $VIDEODIR/$FILENAME"
 
         echo "File does not exist: $VIDEODIR/$FILENAME"
         exit 5
+
         exit 6
 
  fi
 
  fi
 
  # The meat of the script. Flag commercials, copy the flagged commercials to
 
  # The meat of the script. Flag commercials, copy the flagged commercials to
Line 48: Line 48:
 
  mythtranscode --honorcutlist --showprogress -i $VIDEODIR/$FILENAME -o $VIDEODIR/$FILENAME.tmp
 
  mythtranscode --honorcutlist --showprogress -i $VIDEODIR/$FILENAME -o $VIDEODIR/$FILENAME.tmp
 
  ERROR=$?
 
  ERROR=$?
 +
if [ "$ERROR -ne 0" ]; then
 +
        echo "Transcoding failed for ${FILENAME} with error $ERROR"
 +
        exit 3
 +
fi
 +
mythcommflag -f $VIDEODIR/$FILENAME --rebuild
 
  if [ $ERROR -eq 0 ]; then
 
  if [ $ERROR -eq 0 ]; then
 
         mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old
 
         mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old
Line 55: Line 60:
 
         echo "Transcoding failed for ${FILENAME} with error $ERROR"
 
         echo "Transcoding failed for ${FILENAME} with error $ERROR"
 
         rm $VIDEODIR/$FILENAME.tmp
 
         rm $VIDEODIR/$FILENAME.tmp
         exit 3
+
         exit 4
 
  fi
 
  fi
  

Revision as of 04:31, 4 August 2006

The follow script can be setup as a User Job to automatically flag and remove commercials from a recording.

#!/bin/sh
# removecommercials.sh
#
# Copyright 2006 Zach White <zwhite-mythtv@darkstar.frop.org>
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appear in all copies and
# that both that copyright notice and this permission notice appear in
# supporting documentation.
#
# THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
VIDEODIR=$1
FILENAME=$2
# Sanity checking, to make sure everything is in order.
if [ -z "$VIDEODIR" -o -z "$FILENAME" ]; then
        echo "Usage: $0 <VideoDirectory> <FileName>"
        exit 5
fi
if [ ! -f $VIDEODIR/$FILENAME ]; then
        echo "File does not exist: $VIDEODIR/$FILENAME"
        exit 6
fi
# The meat of the script. Flag commercials, copy the flagged commercials to
# the cutlist, and transcode the video to remove the commercials from the
# file.
mythcommflag -f $VIDEODIR/$FILENAME
ERROR=$?
if [ $ERROR -gt 126 ]; then
        echo "Commercial flagging failed for ${FILENAME} with error $ERROR"
        exit 1
fi
mythcommflag --gencutlist -f $VIDEODIR/$FILENAME
ERROR=$?
if [ $ERROR -ne 0 ]; then
        echo "Copying cutlist failed for ${FILENAME} with error $ERROR"
        exit 2
fi
mythtranscode --honorcutlist --showprogress -i $VIDEODIR/$FILENAME -o $VIDEODIR/$FILENAME.tmp
ERROR=$?
if [ "$ERROR -ne 0" ]; then
        echo "Transcoding failed for ${FILENAME} with error $ERROR"
        exit 3
fi
mythcommflag -f $VIDEODIR/$FILENAME --rebuild
if [ $ERROR -eq 0 ]; then
        mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old
        mv $VIDEODIR/$FILENAME.tmp $VIDEODIR/$FILENAME
        exit 0
else
        echo "Transcoding failed for ${FILENAME} with error $ERROR"
        rm $VIDEODIR/$FILENAME.tmp
        exit 4
fi

Please note that this script will save the original file as ${FILENAME}.old. You should periodically remove these files to save space. If you want to remove them automatically, you could use the following command:

find /var/video -name \*.old -ctime 2 -exec rm {} \;

Place this command into a script in /etc/cron.daily or into crontab. This will remove all backup files that are older than 2 days.