Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Extract subtitles from each MKV file in the given directory
- # If no directory is given, work in local dir
- if [ "$1" = "" ]; then
- DIR="."
- else
- DIR="$1"
- fi
- # Get all the MKV files in this dir and its subdirs
- find "$DIR" -type f -name '*.mkv' | while read filename
- do
- # Find out which tracks contain the subtitles
- mkvmerge -i "$filename" | grep 'subtitles' | while read subline
- do
- # Grep the number of the subtitle track
- tracknumber=`echo $subline | egrep -o "[0-9]{1,2}" | head -1`
- # Get base name for subtitle
- subtitlename=${filename%.*}
- # Extract the track to a .tmp file
- `mkvextract tracks "$filename" $tracknumber:"$subtitlename.srt.tmp" > /dev/null 2>&1`
- `chmod g+rw "$subtitlename.srt.tmp"`
- # Do a super-primitive language guess: DUTCH
- langtest=`egrep -ic ' ik | je | een ' "$subtitlename".srt.tmp`
- trimregex="vertaling &\|vertaling:\|vertaald door\|bierdopje"
- # Do a super-primitive language guess: ENGLISH
- #langtest=`egrep -ic ' you | to | the ' "$subtitlename".srt.tmp`
- #trimregex=""
- # Do a super-primitive language guess: GERMAN
- #langtest=`egrep -ic ' ich | ist | sie ' "$subtitlename".srt.tmp`
- #trimregex=""
- # Do a super-primitive language guess: SPANISH
- #langtest=`egrep -ic ' el | es | por ' "$subtitlename".srt.tmp`
- #trimregex=""
- # Check if subtitle passes our language filter (10 or more matches)
- if [ $langtest -ge 10 ]; then
- # Regex to remove credits at the end of subtitles (read my reason why!)
- `sed 's/\r//g' < "$subtitlename.srt.tmp" \
- | sed 's/%/%%/g' \
- | awk '{if (a){printf("\t")};printf $0; a=1; } /^$/{print ""; a=0;}' \
- | grep -iv "$trimregex" \
- | sed 's/\t/\r\n/g' > "$subtitlename.nl.srt"`
- `rm "$subtitlename.srt.tmp"`
- `chmod g+rw "$subtitlename.srt"`
- else
- # Not our desired language: delete it
- `rm "$subtitlename.srt.tmp"`
- fi
- done
- done
Advertisement
Add Comment
Please, Sign In to add comment