Difference between revisions of "Script - RemoveCommercials"
From MythTV Official Wiki
m (Remove unneccesary SQL command.) |
m (Whoops, don't need the variable that was getting set after the last change.) |
||
Line 73: | Line 73: | ||
mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old | mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old | ||
mv $VIDEODIR/$FILENAME.tmp $VIDEODIR/$FILENAME | mv $VIDEODIR/$FILENAME.tmp $VIDEODIR/$FILENAME | ||
− | |||
exit 0 | exit 0 | ||
else | else |
Revision as of 01:50, 6 October 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 ERROR=$? if [ $ERROR -ne 0 ]; then echo "Rebuilding seek list failed for ${FILENAME} with error $ERROR" exit 4 fi mythcommflag --clearcutlist -f $VIDEODIR/$FILENAME ERROR=$? if [ $ERROR -eq 0 ]; then # Fix the database entry for the file cat << EOF | mysql mythconverg UPDATE recorded SET cutlist = 0, filesize = $(ls -l $VIDEODIR/$FILENAME | awk '{print $5}') WHERE basename = '$FILENAME'; EOF mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old mv $VIDEODIR/$FILENAME.tmp $VIDEODIR/$FILENAME exit 0 else echo "Clearing cutlist failed for ${FILENAME} with error $ERROR" rm $VIDEODIR/$FILENAME.tmp exit 5 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.
Note:
I update this script as I make changes to my own system. You should watch this article so you're notified of changes as they occur. If you do not have a wiki account and do not wish to create one you should check back periodically to get changes.