Advertisement
Mirx

NZBGet extract subtitles

May 8th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.32 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #
  3. ##############################################################################
  4. ### NZBGET POST-PROCESSING SCRIPT                                          ###
  5.  
  6. # Script to rip srt/ssa subtitles out of .mkv files
  7. #
  8. # Usage: scriptname.py [filename.mkv]
  9. # If the filename isn't specified all .mkv files in the current directory will be processed
  10. # Developed with ffmpeg 2.1.1, you probably want that or higher if this doesn't work
  11. #
  12.  
  13. ##############################################################################
  14. ### OPTIONS                                                                ###
  15.  
  16. ### NZBGET POST-PROCESSING SCRIPT                                          ###
  17. ##############################################################################
  18.  
  19. import glob, re, argparse, os, sys
  20. from subprocess import call
  21.  
  22. os.chdir(os.environ['NZBPP_DIRECTORY'])
  23.  
  24. # Exit codes used by NZBGet
  25. POSTPROCESS_SUCCESS=93
  26. POSTPROCESS_ERROR=94
  27.  
  28. ffmpeg = 'ffmpeg'
  29.  
  30. parser = argparse.ArgumentParser(description='Extract subtitles from mkv files.')
  31. parser.add_argument('-f', '--file', help="source filename (mkv) to extract subtitle from")
  32. args = parser.parse_args()
  33.  
  34. if args.file is None:
  35.         mkvs = glob.glob("*.mkv")
  36.         if (len(mkvs) == 0):
  37.                 print "No .mkv files in current directory"
  38.         for i in mkvs:
  39.         call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:m:language:eng', re.sub(r".mkv", ".en.srt", i)])
  40.         if os.path.exists(re.sub(r".mkv", ".en.srt", i)):
  41.             if os.path.getsize(re.sub(r".mkv", ".en.srt", i)) < 1 * 1024:
  42.                 os.remove(re.sub(r".mkv", ".en.srt", i))
  43.                 print "Resultaat: Leeg bestand", (re.sub(r".mkv", ".en.srt", i)), "verwijderd, backup proces uitvoeren"
  44.                 call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:s:0', re.sub(r".mkv", ".en.srt", i)])
  45.                 if os.path.exists(re.sub(r".mkv", ".en.srt", i)):
  46.                     if os.path.getsize(re.sub(r".mkv", ".en.srt", i)) < 1 * 1024:
  47.                         os.remove(re.sub(r".mkv", ".en.srt", i))
  48.                         print "Resultaat: Leeg bestand backup proces", (re.sub(r".mkv", ".en.srt", i)), "verwijderd"
  49.                     print "Resultaat: Ondertitel 1 naar", (re.sub(r".mkv", ".en.srt", i)), "gekopieerd, language tag kan fout zijn"
  50.                 call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:s:1', re.sub(r".mkv", ".de.srt", i)])
  51.                 if os.path.exists(re.sub(r".mkv", ".de.srt", i)):
  52.                     if os.path.getsize(re.sub(r".mkv", ".de.srt", i)) < 1 * 1024:
  53.                         os.remove(re.sub(r".mkv", ".de.srt", i))
  54.                         print "Resultaat: Leeg bestand backup proces", (re.sub(r".mkv", ".de.srt", i)), "verwijderd"
  55.                     print "Resultaat: Ondertitel 2 naar", (re.sub(r".mkv", ".de.srt", i)), "gekopieerd, language tag kan fout zijn"
  56.             elif os.path.getsize(re.sub(r".mkv", ".en.srt", i)) > 1 * 1024:
  57.                  print "Resultaat: Engelse ondertitel naar", (re.sub(r".mkv", ".en.srt", i)), "gekopieerd"
  58.         call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:m:language:dut', re.sub(r".mkv", ".nl.srt", i)])
  59.         if os.path.exists(re.sub(r".mkv", ".nl.srt", i)):
  60.             if os.path.getsize(re.sub(r".mkv", ".nl.srt", i)) < 1 * 1024:
  61.                 os.remove(re.sub(r".mkv", ".nl.srt", i))
  62.                 print "Resultaat: Leeg bestand", (re.sub(r".mkv", ".nl.srt", i)), "verwijderd"
  63.             print "Resultaat: Nederlandse ondertitel naar", (re.sub(r".mkv", ".nl.srt", i)), "gekopieerd"
  64.  
  65. else:
  66.         call(process(args.file))
  67.  
  68. sys.exit(POSTPROCESS_SUCCESS)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement