Het script liep er nog tegen aan dat wanneer er meerdere ondertitels zijn met dezelfde language tag, het verwerken fout ging. En dat is bij een hoop web-dl tv series het geval omdat er dan zowel een engelse als SDH engelse ondertitel in zit.
Backupproces toegevoegd wat er dan "dom" de eerste 2 ondertitelstreams eruit haalt in het geval de engelse verwerking fout gaat.
Nogmaals, ik heb geen reet verstand van python, en het zal allemaal best mooier kunnen met variabelen etc.
#!/usr/bin/env python
#
##############################################################################
### NZBGET POST-PROCESSING SCRIPT ###
# Script to rip srt/ssa subtitles out of .mkv files
#
# Usage: scriptname.py [filename.mkv]
# If the filename isn't specified all .mkv files in the current directory will be processed
# Developed with ffmpeg 2.1.1, you probably want that or higher if this doesn't work
#
##############################################################################
### OPTIONS ###
### NZBGET POST-PROCESSING SCRIPT ###
##############################################################################
import glob, re, argparse, os, sys
from subprocess import call
os.chdir(os.environ['NZBPP_DIRECTORY'])
# Exit codes used by NZBGet
POSTPROCESS_SUCCESS=93
POSTPROCESS_ERROR=94
ffmpeg = 'ffmpeg'
parser = argparse.ArgumentParser(description='Extract subtitles from mkv files.')
parser.add_argument('-f', '--file', help="source filename (mkv) to extract subtitle from")
args = parser.parse_args()
if args.file is None:
mkvs = glob.glob("*.mkv")
if (len(mkvs) == 0):
print "No .mkv files in current directory"
for i in mkvs:
call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:m:language:eng', re.sub(r".mkv", ".en.srt", i)])
if os.path.exists(re.sub(r".mkv", ".en.srt", i)):
if os.path.getsize(re.sub(r".mkv", ".en.srt", i)) < 1 * 1024:
os.remove(re.sub(r".mkv", ".en.srt", i))
print "Resultaat: Leeg bestand", (re.sub(r".mkv", ".en.srt", i)), "verwijderd, backup proces uitvoeren"
call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:s:0', re.sub(r".mkv", ".en.srt", i)])
if os.path.exists(re.sub(r".mkv", ".en.srt", i)):
if os.path.getsize(re.sub(r".mkv", ".en.srt", i)) < 1 * 1024:
os.remove(re.sub(r".mkv", ".en.srt", i))
print "Resultaat: Leeg bestand backup proces", (re.sub(r".mkv", ".en.srt", i)), "verwijderd"
print "Resultaat: Ondertitel 1 naar", (re.sub(r".mkv", ".en.srt", i)), "gekopieerd, language tag kan fout zijn"
call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:s:1', re.sub(r".mkv", ".de.srt", i)])
if os.path.exists(re.sub(r".mkv", ".de.srt", i)):
if os.path.getsize(re.sub(r".mkv", ".de.srt", i)) < 1 * 1024:
os.remove(re.sub(r".mkv", ".de.srt", i))
print "Resultaat: Leeg bestand backup proces", (re.sub(r".mkv", ".de.srt", i)), "verwijderd"
print "Resultaat: Ondertitel 2 naar", (re.sub(r".mkv", ".de.srt", i)), "gekopieerd, language tag kan fout zijn"
elif os.path.getsize(re.sub(r".mkv", ".en.srt", i)) > 1 * 1024:
print "Resultaat: Engelse ondertitel naar", (re.sub(r".mkv", ".en.srt", i)), "gekopieerd"
call ([ffmpeg, '-i', i, '-vn', '-an', '-map', '0:m:language:dut', re.sub(r".mkv", ".nl.srt", i)])
if os.path.exists(re.sub(r".mkv", ".nl.srt", i)):
if os.path.getsize(re.sub(r".mkv", ".nl.srt", i)) < 1 * 1024:
os.remove(re.sub(r".mkv", ".nl.srt", i))
print "Resultaat: Leeg bestand", (re.sub(r".mkv", ".nl.srt", i)), "verwijderd"
print "Resultaat: Nederlandse ondertitel naar", (re.sub(r".mkv", ".nl.srt", i)), "gekopieerd"
else:
call(process(args.file))
sys.exit(POSTPROCESS_SUCCESS)