Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -e
- DIR="$1"
- MAXREF="$2"
- MAXCPU="6"
- QUALITY="22"
- DEL="$3"
- if [ "$DIR" == "" ]; then
- echo "Must give directory to look for MKVs in. \".\" will do nicely."
- echo "Exiting."
- echo " "
- exit `/bin/false`
- fi
- if [ "$MAXREF" == "" ]; then
- MAXREF="4"
- fi
- if [ "$DEL" == "--delete" ]; then
- DEL="y"
- fi
- OLDIFS="$IFS"
- IFS=$'\n'
- # don't bother if there's already a Fixed- version
- for FILE in `find "$DIR" -type f -iname \*.mkv \
- | egrep -v "\/Fixed\-"`; do
- # go grab the amount of ReFrames, the Xtreamer gets into trouble if they're
- # more than 4. don't bomb out on account of set -e if no ReFrames are to
- # be found
- REF=`mediainfo "$FILE" | grep ReFrames | cut -d ":" -f 2 | cut -d " " -f 2`
- DIRNAME=`dirname "$FILE"`
- BASE=`basename "$FILE"`
- FIX=`echo "$DIRNAME/Fixed-$BASE"`
- # if gets angry when -gt is used on something empty; luckily, the tests
- # are run in order
- if [ ! "$REF" == "" ]; then
- if [ "$REF" -gt "$MAXREF" ]; then
- if [ -f "$FILE" ]; then
- if [ ! -f "$FIX" ]; then
- # find out how many audio tracks there are, to preserve them all
- TOTALAUDIO=`mediainfo "$FILE" | egrep "^Audio" | wc -l`
- TRACKNUM="1"
- AUDIOS=""
- COPIES=""
- while [ "$TRACKNUM" -le "$TOTALAUDIO" ]; do
- AUDIOS=`echo "$AUDIOS$TRACKNUM,"`
- C="copy,"
- COPIES=`echo "$COPIES$C"`
- let TRACKNUM++
- done
- AUDIOS=`echo "$AUDIOS" | sed s/"\,$"//g`
- COPIES=`echo "$COPIES" | sed s/"\,$"//g`
- # and all the subtitle tracks, too
- TOTALSUBS=`mediainfo "$FILE" | egrep "^Text" | wc -l`
- if [ "$TOTALSUBS" -ge "1" ]; then
- SUBNUM="1"
- SUBS=""
- while [ "$SUBNUM" -le "$TOTALSUBS" ]; do
- SUBS=`echo "$SUBS$SUBNUM,"`
- let SUBNUM++
- done
- SUBS=`echo "$SUBS" | sed s/"\,$"//g`
- fi
- DATE=`date --rfc-822`
- echo "Handling $FILE:" >>/tmp/fix.log
- echo " - Starting at $DATE" >>/tmp/fix.log
- echo " - Reframes: $REF" >>/tmp/fix.log
- echo " - Audio tracks: $TOTALAUDIO" >>/tmp/fix.log
- echo " - Subtitles: $TOTALSUBS" >>/tmp/fix.log
- echo " - Target: $FIX" >>/tmp/fix.log
- # with or without any subtitles mandates if -s used or not
- if [ "$TOTALSUBS" -ge "1" ]; then
- echo " - Args: -a $AUDIOS -E $COPIES -s $SUBS" >>/tmp/fix.log
- nice HandBrakeCLI -i "$FILE" -o "$FIX" \
- -q "$QUALITY" -f mkv \
- -C "$MAXCPU" -e x264 \
- -a "$AUDIOS" -E "$COPIES" \
- -s "$SUBS" \
- --markers -2 -T --cfr
- else
- echo " - Args: -a $AUDIOS -E $COPIES" >>/tmp/fix.log
- nice HandBrakeCLI -i "$FILE" -o "$FIX" \
- -q "$QUALITY" -f mkv \
- -C "$MAXCPU" -e x264 \
- -a "$AUDIOS" -E "$COPIES" \
- --markers -2 -T --cfr
- fi
- if [ "$DEL" == "y" ]; then
- FILELENGTH=`mediainfo "$FILE" \
- | egrep "^Duration" \
- | head -1 \
- | cut -d ":" -f 2 \
- | sed s/"^\ *"//g`
- FIXLENGTH=` mediainfo "$FIX" \
- | egrep "^Duration" \
- | head -1 \
- | cut -d ":" -f 2 \
- | sed s/"^\ *"//g`
- if [ "$FILELENGTH" == "$FIXLENGTH" ]; then
- echo " - Duration matches, overwriting $FILE" >>/tmp/fix.log
- mv "$FIX" "$FILE"
- else
- echo " - Duration DOES NOT MATCH, keeping $FILE" >>/tmp/fix.log
- fi
- fi
- DATE=`date --rfc-822`
- echo " - Finished at $DATE" >>/tmp/fix.log
- else
- echo "Skipping $FILE -> $FIX, already exists" >>/tmp/fix.log
- fi
- else
- echo "ERROR: $FILE does not exist; strange chars in filename?"
- echo "Exiting. Please to be examining situation."
- exit `/bin/false`
- fi
- else
- echo "Skipping $FILE -> $FIX, no ReFrames found." >>/tmp/fix.log
- fi
- fi
- done
- IFS="$OLDIFS"
- exit `/bin/true`
Add Comment
Please, Sign In to add comment