schmittyd

pp-mkvmerge

May 7th, 2019
704
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import os
  3. import sys
  4. import re
  5.  
  6. language = 'eng' # 3 letters, lower case!
  7.  
  8.  
  9. def handlemkv(mkvfilename):
  10.     print mkvfilename
  11.     # find Audio streams    
  12.     # ffmpeg -i *.mkv 2>&1 | grep -i -e Audio:
  13.     # Example output:
  14.     #    Stream #0:1(ger): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s (default)
  15.     #    Stream #0:2(jpn): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s
  16.     cmd = 'ffmpeg -i "' + mkvfilename + '" 2>&1 | grep -i -e Audio:'
  17.     print "cmd is", cmd
  18.     streamnumber = -1
  19.     for thisline in os.popen(cmd).readlines():
  20.         print thisline.rstrip()
  21.         if thisline.find(language)>=0:
  22.             try:
  23.                 # streamnumber = thisline.split(':')[1].split('(')[0]
  24.                 streamnumber = re.findall(r"[\w']+", thisline)[2]
  25.                 print "Stream number", streamnumber
  26.                 streamnumber = int(streamnumber)    # force it to be an integer so we know we found correct info
  27.             except:
  28.                 print "Something went wrong with find the stream number. Please report with logfile"
  29.                 sys.exit(0)
  30.             break
  31.     if streamnumber >= 0:
  32.         print "Language found in stream", streamnumber
  33.     else:
  34.         print("Language %s not found" % (language))
  35.         return()
  36.     print "Go on"
  37.  
  38.     # leave only one audio stream, remove all subs
  39.     # mkvmerge -o new2.mkv -a 1 --nosubs movie-Ger-Jap-Dub.mkv
  40.     directory, filename = os.path.split(mkvfilename)
  41.     cleanmoviename = os.path.join(directory, "cleanedmovie.mkv")
  42.     print "cleanmoviename", cleanmoviename
  43.     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 + '"'
  44.     print "command is", cmd
  45.     for thisline in os.popen(cmd).readlines():
  46.         print thisline.rstrip()
  47.  
  48.     # Delete original mkv, rename new one to original name and chmod it
  49.     print "Cleaning up"
  50.     os.remove(mkvfilename)
  51.     os.rename(cleanmoviename, mkvfilename)
  52.     os.chmod(mkvfilename, 0775)
  53.  
  54.  
  55.  
  56. try:
  57.     root = sys.argv[1]
  58. except:
  59.     print "Define directory on the commandline"
  60.     sys.exit(1)
  61.  
  62. print("Language %s to be kept" % (language))
  63.  
  64. print "Searching:", root
  65. for path, subdirs, files in os.walk(root):
  66.     for name in files:
  67.         fullname = os.path.join(path, name)
  68.     if os.path.splitext(fullname)[1].lower() == '.mkv':
  69.         print "Found mkv", fullname
  70.         handlemkv(fullname)
Add Comment
Please, Sign In to add comment