#!/bin/bash

# Script which decodes TiVo files, translates them into a format for a Zen
# Then copies the files to a SMB Share. Emails address 1 notifing what was done,
# emails address 2 to advise files waiting. Then removes files older than one
# week.
#
# I use Galleon to automatically transfer files to the local system.
#
# You will need to install tivodecode and mencoder

TIVODECODE=/usr/local/bin/tivodecode
SOURCE_DIR=~/Media/TiVo
OUTPUT_DIR1=~/Media/Decoded
OUTPUT_DIR2=~/Media/Zen
TO_DEL_DIR=~/Media/2Delete

# See http://www.pigstye.net/articles/2006/09/18/perl-script-to-remove-spaces-from-file-dir-names
/usr/bin/nospace $SOURCE_DIR

# Lets get started with the Decodeing

echo "                        Starting Stats" > /tmp/tivohead.tmp
echo "************************************************************" >> /tmp/tivohead.tmp
cd "$SOURCE_DIR"
echo "The Tivo Directory contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivohead.tmp
cd "$OUTPUT_DIR1"
echo "The Decoded Directory contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivohead.tmp
cd "$OUTPUT_DIR2"
echo "The Zen Directory contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivohead.tmp
echo "************************************************************" >> /tmp/tivohead.tmp
echo "" > /tmp/tivostat.tmp

cd "$SOURCE_DIR"
ls | egrep ".TiVo$" | while read FILE
do
    if ( [ ! -N "$FILE" ] )
    then
        if [ ! -e "$OUTPUT_DIR1/$FILE.mpg" ]
        then
        echo Decoding $FILE >> /tmp/tivostat.tmp
	echo Starting Decode `date +%H:%M:%S` >> /tmp/tivostat.tmp
        # put TiVo MAK in ~/.tivodecode_mak
        nice -n 5 $TIVODECODE -o "$OUTPUT_DIR1/$FILE.mpg" "$FILE"
	echo Finished Decode `date +%H:%M:%S` >> /tmp/tivostat.tmp
	#echo File size is `ls -lh $OUTPUT_DIR1/"$FILE" | awk '{ print $5 }'` >> /tmp/tivostat.tmp
	echo "" >> /tmp/tivostat.tmp
        if [ ! -e "$OUTPUT_DIR2/$FILE.avi" ]
	then
        echo Translating $FILE >> /tmp/tivostat.tmp
        echo Starting Zen 4:3 Translation `date +%H:%M:%S` >> /tmp/tivostat.tmp
	nice -n 5 mencoder $OUTPUT_DIR1/$FILE.mpg -ovc lavc -oac mp3lame -lameopts vbr=0:cbr:br=128 -af volume=20 -lavcopts vcodec=mpeg4:vbitrate=500 -vf pp=fd,softskip,format=yv12,scale=340:272 -ofps 30000/1001 -ffourcc XVID -of avi -noodml -o  $OUTPUT_DIR2/$FILE.avi 
        echo Finished Zen 4:3 Translation `date +%H:%M:%S` >> /tmp/tivostat.tmp
#
#       echo Starting Zen 16:9 Translation `date +%H:%M:%S` >> /tmp/tivostat.tmp
#       nice -n 5 mencoder $OUTPUT_DIR1/$FILE.mpg lavc -oac mp3lame -lameopts \
#       vbr=0:cbr:br=128 -lavcopts -af volume=30 vcodec=mpeg4:vbitrate=750 -vf \
#       pp=fd,softskip,format=yv12,scale=340:272 -ofps 30000/1001 -ffourcc \
#       XVID -of avi -noodml -o $OUTPUT_DIR2/$FILE.avi
#       echo Finished Zen 16:9 Translation `date +%H:%M:%S` >> /tmp/tivostat.tmp
#
        echo "" >> /tmp/tivostat.tmp
	fi
        fi
        mv "$FILE" "$TO_DEL_DIR/"
        mv $OUTPUT_DIR1/"$FILE.mpg" "$TO_DEL_DIR/"
        cd $OUTPUT_DIR2/
        /usr/bin/smbclient //192.168.X.X/Zen PASSWORD -c "prompt off; mput *.avi"
        mv $OUTPUT_DIR2/"$FILE.avi" "$TO_DEL_DIR/"
    else
        echo Skipping $FILE >> /tmp/tivostat.tmp
	echo "" >> /tmp/tivostat.tmp
    fi

    file "$FILE" > /dev/null
    sleep 61

done

echo "" > /tmp/tivotail.tmp
echo "                           Summary" >> /tmp/tivotail.tmp
echo "************************************************************" >> /tmp/tivotail.tmp
cd "$SOURCE_DIR"
echo "The Tivo Directory now contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivotail.tmp
cd "$OUTPUT_DIR1"
echo "The Decoded Directory now contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivotail.tmp
cd "$OUTPUT_DIR2"
echo "The Zen Directory now contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivotail.tmp
cd "$TO_DEL_DIR"
echo "The ToBeDeleted Directory now contains `ls | wc -l` files totalling `du -h`" >> /tmp/tivotail.tmp
echo "" >> /tmp/tivotail.tmp
echo "                       Hard Drive Space" >> /tmp/tivotail.tmp
echo "************************************************************" >> /tmp/tivotail.tmp
df -h | head -n 2 >> /tmp/tivotail.tmp

cat /tmp/tivohead.tmp > /tmp/tivomail.tmp
cat /tmp/tivostat.tmp >> /tmp/tivomail.tmp
cat /tmp/tivotail.tmp >> /tmp/tivomail.tmp

TiVoMAIL=`cat /tmp/tivostat.tmp | wc -l`
#NUM=3
NUM=2
if [ $NUM -lt $TiVoMAIL ]
then
        cat  /tmp/tivomail.tmp | /usr/bin/mailx -s "TiVo Decode for `date +%k%Mhrs-%Y%m%d`" bob@dev.net
fi

#/home/hogfish/.scripts/rsync_zen.sh&

# Create some text for email to wife
echo "" > /tmp/zentail.tmp
echo " These are the Shows available for you to transfer to your Zen" >> /tmp/zentail.tmp
echo "****************************************************************" >> /tmp/zentail.tmp
/usr/bin/smbclient //192.168.X.X/Zen PASSWORD -c ls | egrep "*.avi *" >> /tmp/zentail.tmp
echo "" >> /tmp/zentail.tmp
echo "" >> /tmp/zentail.tmp

RSYNCFILE2=`cat /tmp/zentail.tmp | wc -l`
NUM=5

if [ $NUM -lt $RSYNCFILE2 ]
then
    cat /tmp/zentail.tmp | /usr/bin/mailx -s "rsync [Zen Files]: `date +%k%Mhrs-%Y%m%d`" mrsbob@dev.net
fi

# Delete files over 7 days old in Delete Dir
for i in `find $TO_DEL_DIR -maxdepth 1 -mtime +7 -print`; do rm -rf $i; done

exit 0

