Guest User

Untitled

a guest
May 23rd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.14 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. set -e
  4.  
  5. DIR="$1"
  6. MAXREF="$2"
  7. MAXCPU="6"
  8. QUALITY="22"
  9. DEL="$3"
  10.  
  11. if [ "$DIR" == "" ]; then
  12.    echo "Must give directory to look for MKVs in. \".\" will do nicely."
  13.    echo "Exiting."
  14.    echo " "
  15.    exit `/bin/false`
  16. fi
  17.  
  18. if [ "$MAXREF" == "" ]; then
  19.    MAXREF="4"
  20. fi
  21.  
  22. if [ "$DEL" == "--delete" ]; then
  23.    DEL="y"
  24. fi
  25.  
  26.  
  27. OLDIFS="$IFS"
  28. IFS=$'\n'
  29.  
  30. # don't bother if there's already a Fixed- version
  31. for FILE in `find "$DIR" -type f -iname \*.mkv \
  32.                   | egrep -v "\/Fixed\-"`; do
  33.    # go grab the amount of ReFrames, the Xtreamer gets into trouble if they're
  34.    # more than 4. don't bomb out on account of set -e if no ReFrames are to
  35.    # be found
  36.    REF=`mediainfo "$FILE" | grep ReFrames | cut -d ":" -f 2 | cut -d " " -f 2`
  37.    DIRNAME=`dirname "$FILE"`
  38.    BASE=`basename "$FILE"`
  39.    FIX=`echo "$DIRNAME/Fixed-$BASE"`
  40.    # if gets angry when -gt is used on something empty; luckily, the tests
  41.    # are run in order
  42.    if [ ! "$REF" == "" ]; then
  43.       if [ "$REF" -gt "$MAXREF" ]; then
  44.          if [ -f "$FILE" ]; then
  45.             if [ ! -f "$FIX" ]; then
  46.                # find out how many audio tracks there are, to preserve them all
  47.                TOTALAUDIO=`mediainfo "$FILE" | egrep "^Audio" | wc -l`
  48.                TRACKNUM="1"
  49.                AUDIOS=""
  50.                COPIES=""
  51.                while [ "$TRACKNUM" -le "$TOTALAUDIO" ]; do
  52.                    AUDIOS=`echo "$AUDIOS$TRACKNUM,"`
  53.                    C="copy,"
  54.                    COPIES=`echo "$COPIES$C"`
  55.                    let TRACKNUM++
  56.                done
  57.                AUDIOS=`echo "$AUDIOS" | sed s/"\,$"//g`
  58.                COPIES=`echo "$COPIES" | sed s/"\,$"//g`
  59.  
  60.                # and all the subtitle tracks, too
  61.                TOTALSUBS=`mediainfo "$FILE" | egrep "^Text" | wc -l`
  62.                if [ "$TOTALSUBS" -ge "1" ]; then
  63.                   SUBNUM="1"
  64.                   SUBS=""
  65.                   while [ "$SUBNUM" -le "$TOTALSUBS" ]; do
  66.                       SUBS=`echo "$SUBS$SUBNUM,"`
  67.                       let SUBNUM++
  68.                   done
  69.                   SUBS=`echo "$SUBS" | sed s/"\,$"//g`
  70.                fi
  71.  
  72.                DATE=`date --rfc-822`
  73.                echo "Handling $FILE:"                            >>/tmp/fix.log
  74.                echo "    - Starting at $DATE"                    >>/tmp/fix.log
  75.                echo "    - Reframes: $REF"                       >>/tmp/fix.log
  76.                echo "    - Audio tracks: $TOTALAUDIO"            >>/tmp/fix.log
  77.                echo "    - Subtitles: $TOTALSUBS"                >>/tmp/fix.log
  78.                echo "    - Target: $FIX"                         >>/tmp/fix.log
  79.                # with or without any subtitles mandates if -s used or not
  80.                if [ "$TOTALSUBS" -ge "1" ]; then
  81.                    echo "    - Args: -a $AUDIOS -E $COPIES -s $SUBS" >>/tmp/fix.log
  82.                    nice HandBrakeCLI -i "$FILE" -o "$FIX"       \
  83.                                      -q "$QUALITY" -f mkv       \
  84.                                      -C "$MAXCPU" -e x264       \
  85.                                      -a "$AUDIOS" -E "$COPIES"  \
  86.                                      -s "$SUBS"                 \
  87.                                      --markers -2 -T --cfr
  88.                  else
  89.                    echo "    - Args: -a $AUDIOS -E $COPIES" >>/tmp/fix.log
  90.                    nice HandBrakeCLI -i "$FILE" -o "$FIX"       \
  91.                                      -q "$QUALITY" -f mkv       \
  92.                                      -C "$MAXCPU" -e x264       \
  93.                                      -a "$AUDIOS" -E "$COPIES"  \
  94.                                      --markers -2 -T --cfr
  95.                fi
  96.                if [ "$DEL" == "y" ]; then
  97.                   FILELENGTH=`mediainfo "$FILE"   \
  98.                               | egrep "^Duration" \
  99.                               | head -1           \
  100.                               | cut -d ":" -f 2   \
  101.                               | sed s/"^\ *"//g`
  102.                   FIXLENGTH=` mediainfo "$FIX"    \
  103.                               | egrep "^Duration" \
  104.                               | head -1           \
  105.                               | cut -d ":" -f 2   \
  106.                               | sed s/"^\ *"//g`
  107.                   if [ "$FILELENGTH" == "$FIXLENGTH" ]; then
  108.                      echo "    - Duration matches, overwriting $FILE" >>/tmp/fix.log
  109.                      mv "$FIX" "$FILE"
  110.                     else
  111.                      echo "    - Duration DOES NOT MATCH, keeping $FILE" >>/tmp/fix.log
  112.                   fi
  113.                fi
  114.                DATE=`date --rfc-822`
  115.                echo "    - Finished at $DATE"                    >>/tmp/fix.log
  116.  
  117.               else
  118.                echo "Skipping $FILE -> $FIX, already exists" >>/tmp/fix.log
  119.              fi
  120.           else
  121.             echo "ERROR: $FILE does not exist; strange chars in filename?"
  122.             echo "Exiting. Please to be examining situation."
  123.             exit `/bin/false`
  124.           fi
  125.        else
  126.          echo "Skipping $FILE -> $FIX, no ReFrames found." >>/tmp/fix.log
  127.        fi
  128.    fi
  129. done
  130.  
  131. IFS="$OLDIFS"
  132.  
  133. exit `/bin/true`
Add Comment
Please, Sign In to add comment