Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import os
- import sys
- import re
- language = 'eng' # 3 letters, lower case!
- def handlemkv(mkvfilename):
- print mkvfilename
- # find Audio streams
- # ffmpeg -i *.mkv 2>&1 | grep -i -e Audio:
- # Example output:
- # Stream #0:1(ger): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s (default)
- # Stream #0:2(jpn): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s
- cmd = 'ffmpeg -i "' + mkvfilename + '" 2>&1 | grep -i -e Audio:'
- print "cmd is", cmd
- streamnumber = -1
- for thisline in os.popen(cmd).readlines():
- print thisline.rstrip()
- if thisline.find(language)>=0:
- try:
- # streamnumber = thisline.split(':')[1].split('(')[0]
- streamnumber = re.findall(r"[\w']+", thisline)[2]
- print "Stream number", streamnumber
- streamnumber = int(streamnumber) # force it to be an integer so we know we found correct info
- except:
- print "Something went wrong with find the stream number. Please report with logfile"
- sys.exit(0)
- break
- if streamnumber >= 0:
- print "Language found in stream", streamnumber
- else:
- print("Language %s not found" % (language))
- return()
- print "Go on"
- # leave only one audio stream, remove all subs
- # mkvmerge -o new2.mkv -a 1 --nosubs movie-Ger-Jap-Dub.mkv
- directory, filename = os.path.split(mkvfilename)
- cleanmoviename = os.path.join(directory, "cleanedmovie.mkv")
- print "cleanmoviename", cleanmoviename
- cmd = 'mkvmerge -o "' + cleanmoviename + '" -a ' + str(streamnumber) + ' --delete-attachment ' + --edit track:v1 + ' --delete name + ' --edit track:a1 + ' --delete name + ' --edit track:s1 + ' --delete name "' + mkvfilename + '"'
- print "command is", cmd
- for thisline in os.popen(cmd).readlines():
- print thisline.rstrip()
- # Delete original mkv, rename new one to original name and chmod it
- print "Cleaning up"
- os.remove(mkvfilename)
- os.rename(cleanmoviename, mkvfilename)
- os.chmod(mkvfilename, 0775)
- try:
- root = sys.argv[1]
- except:
- print "Define directory on the commandline"
- sys.exit(1)
- print("Language %s to be kept" % (language))
- print "Searching:", root
- for path, subdirs, files in os.walk(root):
- for name in files:
- fullname = os.path.join(path, name)
- if os.path.splitext(fullname)[1].lower() == '.mkv':
- print "Found mkv", fullname
- handlemkv(fullname)
Add Comment
Please, Sign In to add comment