Difference between revisions of "Script - RemoveCommercials"
From MythTV Official Wiki
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 | + | 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 | + | 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 | + | 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.