Extrakce titulků z mkv

sudo apt-get install mkvtoolnix
./ripsubtitles.sh /home/vášnick/cestaksouboru/názevsouboru


ripsubtitles.sh:

 

#!/bin/bash
# Extract subtitles from each MKV file in the given directory

# If no directory is given, work in local dir
if [ „$1“ = „“ ]; then
  $1 = ‚.‘;
fi

# Get all the MKV files in this dir and its subdirs
find „$1“ -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.srt“`
      `rm „$subtitlename.srt.tmp“`
      `chmod g+rw „$subtitlename.srt“`
    else
      # Not our desired language: add a number to the filename and keep anyway, just in case
      `mv „$subtitlename.srt.tmp“ „$subtitlename.$tracknumber.srt“ > /dev/null 2>&1`
    fi
  done
done