Difference between revisions of "Script - RemoveCommercials"
(→Fix the 'watch' link - Does anybody know how to make this an internal link?) |
|||
Line 63: | Line 63: | ||
See the discussion tab for tips on using the mpeg2 lossless transcoding. | See the discussion tab for tips on using the mpeg2 lossless transcoding. | ||
+ | |||
+ | If you use this scipt and have commercial auto-skip set then during playback you will notice that MythTV skips over parts of your program. This is because the information about where commercials are located is still available. Adding this query after the UPDATE and before the EOF will remove the commercial points and allow things to run smoothly. | ||
+ | |||
+ | DELETE FROM | ||
+ | `recordedmarkup` | ||
+ | WHERE | ||
+ | CONCAT( chanid, starttime ) IN ( | ||
+ | SELECT | ||
+ | CONCAT( chanid, starttime ) | ||
+ | FROM | ||
+ | recorded | ||
+ | WHERE | ||
+ | basename = '1042_20071013225900.mpg' | ||
+ | ); | ||
+ | |||
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: | 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: |
Revision as of 22:06, 14 October 2007
The follow script can be setup as a User Job to automatically flag and remove commercials from a recording.
#!/bin/sh 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 $ERROR fi mythcommflag --gencutlist -f $VIDEODIR/$FILENAME ERROR=$? if [ $ERROR -ne 0 ]; then echo "Copying cutlist failed for ${FILENAME} with error $ERROR" exit $ERROR 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 $ERROR fi mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old mv $VIDEODIR/$FILENAME.tmp $VIDEODIR/$FILENAME mythcommflag -f $VIDEODIR/${FILENAME} --rebuild ERROR=$? if [ $ERROR -ne 0 ]; then echo "Rebuilding seek list failed for ${FILENAME} with error $ERROR" exit $ERROR 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 exit 0 else echo "Clearing cutlist failed for ${FILENAME} with error $ERROR" rm /usr/video/$FILENAME.tmp exit $ERROR fi
See the discussion tab for tips on using the mpeg2 lossless transcoding.
If you use this scipt and have commercial auto-skip set then during playback you will notice that MythTV skips over parts of your program. This is because the information about where commercials are located is still available. Adding this query after the UPDATE and before the EOF will remove the commercial points and allow things to run smoothly.
DELETE FROM
`recordedmarkup`
WHERE
CONCAT( chanid, starttime ) IN ( SELECT CONCAT( chanid, starttime )
FROM
recorded WHERE basename = '1042_20071013225900.mpg' );
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.