Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- source_dir="/home/eldamar/video"
- find $source_dir -type f -regex ".*/.*\.\(mov\|mpg\|mkv\|avi\|m2v\|wmv\|flv\|m2ts\|vob\)" | {
- while read file
- do
- ext=${file##*.}
- filename=${file##*/}
- basename=${filename%.*}
- dirname=${file%/*}
- touch converted.txt; touch failed.txt
- if grep -Fxq "$filename" converted.txt
- then
- echo "$(tput setaf 2)$(tput bold)"$filename" is allready converted, ignore it :D$(tput sgr0)"
- else
- # Extract subtitles for mkv files
- if [ "$ext"=="mkv" ]; then
- # input.srt <- default subtitle
- # input.lang.srt <- other languages
- readarray mkvi < <(mkvinfo $file | grep "subtitles" -B3 -A20)
- i=0; for item in "${mkvi[@]}"; do
- let i++
- echo $t"_"$item
- tracknr=$(echo $item | awk '/Track number/ {print($5)}')
- if [[ $tracknr ]]; then
- # Do we have information for prev track?
- if [[ $tnr ]]; then
- # Do something to track information gathered
- echo "$(tput setaf 2)Hurray we have a subtitle for "$filename"!$(tput sgr0)"
- mkvextract tracks $file -c UTF8 $tnr:$dirname/$basename$sublang.srt
- fi
- # Store track nr
- tnr=$tracknr
- fi
- # Language
- sl=$(echo $item | awk '/Language/ {print($4)}')
- if [[ $sl ]]; then sublang="."$sl; fi
- # Done with the last track
- if [ $i -eq ${#mkvi[@]} ]; then
- echo "$(tput setaf 2)Hurray we have a subtitle for "$filename"!$(tput sgr0)"
- mkvextract tracks $file -c UTF8 $tnr:$dirname/$basename$sublang.srt
- fi
- done
- fi
- # Start converting!
- newfile="$dirname/$basename.mp4"
- avcmd="avconv -y -i $file -map 0:v -map 0:a -map -0:s -vcodec libx264 -acodec libfaac $newfile"
- echo "$(tput setaf 3)$avcmd$(tput setaf color)"
- success=1; $avcmd && success=0
- if [ $success -eq 0 ]; then
- echo "$(tput setaf 2)Hurray! done converting "$filename"$(tput sgr0)"
- echo $filename >> converted.txt
- newfile=$dirname/$basename.mp4
- oldsize=$(du -b ${$file} | sed 's/\([0-9]*\)\(.*\)/\1/')
- size=$(du -b ${newfile} | sed 's/\([0-9]*\)\(.*\)/\1/')
- savedspace=$oldsize-$size
- echo "Filesize "$oldsize" -> "$size
- echo "Saved space after converting is "$savedSpace
- #rm $file ## PROBABLY DO RM FROM converted.txt LIST LATER ON ;)
- else
- echo "$(tput setaf 1)Oh, crap!$(tput sgr0)"
- echo $filename >> failed.txt
- # Exit on failed attempt, helps debuging
- # exit;
- fi
- fi
- done;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement