Auteur Topic: Post proces script extract subs to srt  (gelezen 13009 keer)

Offline hamkaastosti

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 12
Re: Post proces script extract subs to srt
« Reactie #15 Gepost op: 22 augustus 2016, 22:52:21 »
Heb het werkend gekregen. Als ik de post script flatten gebruik voordat dit script uitvoer werkt het.
Helemaal top!
  • Mijn Synology: DS116
  • HDD's: 1x 4TB

Offline Mirx

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 17
Re: Post proces script extract subs to srt
« Reactie #16 Gepost op: 16 november 2017, 14:14:01 »
Sorry dat ik een eeuwenoud topic herrijs, maar aangezien ik er zelf ook wel paar uur google aan het moeten besteden dacht ik laat ik het toch maar delen.

Ik heb het script iets aangepast om uit de bestanden de (1ste) Nederlandse en Engelse ondertitels uit te halen, en die te voorzien van de juiste language code. Dus iets intelligenter.

Geen flauw idee of het lekker geprogrammeerd is, maar het werkt in ieder geval wel  :lol:

Het ffmpeg commando aangepast zodat op basis van de metatags de taal bepaald van de ondertitel, en het extract process 2x gemaakt.
Als er een audio track met de metatag met de taal aanwezig is wordt er een leeg bestand aangemaakt. Daarom checkt het script of er een 0KB bestand is aangemaakt, en zo ja wordt deze verwijderd.
Het proces werd verder maar 1x aangeroepen, dus zag daar het nut niet van in en het wat platter gemaakt.

#!/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)])
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", ".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 "Leeg bestand", (re.sub(r".mkv", ".en.srt", i)), "verwijderd"
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 "Leeg bestand", (re.sub(r".mkv", ".nl.srt", i)), "verwijderd"

else:
        call(process(args.file))

sys.exit(POSTPROCESS_SUCCESS)
  • Mijn Synology: DS412+

Offline Mirx

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 17
Re: Post proces script extract subs to srt
« Reactie #17 Gepost op: 29 januari 2018, 20:01:29 »
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)
  • Mijn Synology: DS412+


 

Sickrage / Sickbeard TPb post processing problemen

Gestart door NeoPhytheBoard SickBeard

Reacties: 1
Gelezen: 1742
Laatste bericht 04 december 2014, 10:14:49
door Ben(V)
sabnzbplus en post-proc voor newzbin

Gestart door daferraBoard SABnzbd (usenet)

Reacties: 5
Gelezen: 7702
Laatste bericht 08 januari 2008, 18:47:08
door daferra
Post Scripts werken niet

Gestart door sjors86Board NZBGet

Reacties: 2
Gelezen: 3936
Laatste bericht 09 november 2015, 10:37:57
door Zidane10
Problemen met post processing icm SABnzbd

Gestart door PascalPBoard SickBeard

Reacties: 9
Gelezen: 4631
Laatste bericht 09 februari 2015, 22:27:49
door PascalP
SickBeard post processing probleem

Gestart door Matr1xBoard SickBeard

Reacties: 30
Gelezen: 29381
Laatste bericht 26 december 2011, 22:40:22
door Matr1x