Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2013
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.60 KB | None | 0 0
  1. #! /bin/bash
  2. source_dir="/home/eldamar/video"
  3.  
  4. find $source_dir -type f -regex ".*/.*\.\(mov\|mpg\|mkv\|avi\|m2v\|wmv\|flv\|m2ts\|vob\)" | {
  5. while read file
  6.   do
  7.  
  8.   ext=${file##*.}
  9.   filename=${file##*/}
  10.   basename=${filename%.*}
  11.   dirname=${file%/*}
  12.  
  13.   touch converted.txt; touch failed.txt
  14.  
  15.   if grep -Fxq "$filename" converted.txt
  16.   then
  17.     echo "$(tput setaf 2)$(tput bold)"$filename" is allready converted, ignore it :D$(tput sgr0)"
  18.   else
  19.     # Extract subtitles for mkv files
  20.     if [ "$ext"=="mkv" ]; then
  21.       # input.srt <- default subtitle
  22.       # input.lang.srt <- other languages
  23.       readarray mkvi < <(mkvinfo $file | grep "subtitles" -B3 -A20)
  24.       i=0; for item in "${mkvi[@]}"; do
  25.         let i++
  26.         echo $t"_"$item
  27.        
  28.         tracknr=$(echo $item | awk '/Track number/ {print($5)}')
  29.         if [[ $tracknr ]]; then
  30.           # Do we have information for prev track?
  31.           if [[ $tnr ]]; then
  32.             # Do something to track information gathered
  33.             echo "$(tput setaf 2)Hurray we have a subtitle for "$filename"!$(tput sgr0)"
  34.             mkvextract tracks $file -c UTF8 $tnr:$dirname/$basename$sublang.srt
  35.           fi
  36.           # Store track nr
  37.           tnr=$tracknr
  38.         fi
  39.  
  40.         # Language
  41.         sl=$(echo $item | awk '/Language/ {print($4)}')
  42.         if [[ $sl ]]; then sublang="."$sl; fi
  43.  
  44.         # Done with the last track
  45.         if [ $i -eq ${#mkvi[@]} ]; then
  46.           echo "$(tput setaf 2)Hurray we have a subtitle for "$filename"!$(tput sgr0)"
  47.           mkvextract tracks $file -c UTF8 $tnr:$dirname/$basename$sublang.srt
  48.         fi
  49.       done
  50.     fi
  51.    
  52.     # Start converting!
  53.     newfile="$dirname/$basename.mp4"
  54.     avcmd="avconv -y -i $file -map 0:v -map 0:a -map -0:s -vcodec libx264 -acodec libfaac $newfile"
  55.     echo "$(tput setaf 3)$avcmd$(tput setaf color)"
  56.     success=1; $avcmd && success=0
  57.     if [ $success -eq 0 ]; then
  58.       echo "$(tput setaf 2)Hurray! done converting "$filename"$(tput sgr0)"
  59.       echo $filename >> converted.txt
  60.      
  61.       newfile=$dirname/$basename.mp4
  62.       oldsize=$(du -b ${$file} | sed 's/\([0-9]*\)\(.*\)/\1/')
  63.       size=$(du -b ${newfile} | sed 's/\([0-9]*\)\(.*\)/\1/')
  64.       savedspace=$oldsize-$size
  65.       echo "Filesize "$oldsize" -> "$size
  66.       echo "Saved space after converting is "$savedSpace
  67.      
  68.       #rm $file ## PROBABLY DO RM FROM converted.txt LIST LATER ON ;)
  69.     else
  70.       echo "$(tput setaf 1)Oh, crap!$(tput sgr0)"
  71.       echo $filename >> failed.txt
  72.       # Exit on failed attempt, helps debuging
  73.       # exit;
  74.     fi
  75.   fi
  76.   done;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement