Auteur Topic: Post proces script extract subs to srt  (gelezen 6932 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: 1041
Laatste bericht 04 december 2014, 10:14:49
door Ben(V)
sabnzbplus en post-proc voor newzbin

Gestart door daferraBoard SABnzbd (usenet)

Reacties: 0
Gelezen: 2454
Laatste bericht 06 januari 2008, 20:55:12
door daferra
Problemen met post processing icm SABnzbd

Gestart door PascalPBoard SickBeard

Reacties: 9
Gelezen: 3265
Laatste bericht 09 februari 2015, 22:27:49
door PascalP
Sickbeard Post Processing settings

Gestart door diggerBoard Auto-Sub

Reacties: 12
Gelezen: 3694
Laatste bericht 04 oktober 2015, 14:09:29
door digger
Blog : post verwijderen ?

Gestart door yasolBoard Photo Station / Blog

Reacties: 3
Gelezen: 1644
Laatste bericht 28 december 2011, 09:38:13
door henkg