other parts write to stdout, write output to tmp file
This commit is contained in:
parent
f6a1d168ee
commit
ecf5effc83
2 changed files with 13 additions and 6 deletions
|
|
@ -30,11 +30,13 @@ def transcribe(path, language=None, translate=None):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
usage = "usage: %(prog)s [options] path"
|
usage = "usage: %(prog)s [options] path output"
|
||||||
parser = ArgumentParser(usage=usage, prog="run_whisper")
|
parser = ArgumentParser(usage=usage, prog="run_whisper")
|
||||||
parser.add_argument("-l", "--language", dest="language", default=None)
|
parser.add_argument("-l", "--language", dest="language", default=None)
|
||||||
parser.add_argument("-t", "--translate", dest="translate", default=None)
|
parser.add_argument("-t", "--translate", dest="translate", default=None)
|
||||||
parser.add_argument("path", metavar="path", type=str, help="media")
|
parser.add_argument("path", metavar="path", type=str, help="media input")
|
||||||
|
parser.add_argument("output", metavar="output", type=str, help="json output")
|
||||||
opts = parser.parse_args()
|
opts = parser.parse_args()
|
||||||
result = transcribe(opts.path, opts.language, opts.translate)
|
result = transcribe(opts.path, opts.language, opts.translate)
|
||||||
print(json.dumps(result, indent=2, ensure_ascii=False))
|
with open(opts.output, "w") as fd:
|
||||||
|
json.dump(result, fd, indent=2, ensure_ascii=False)
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,9 @@ def extract_subtitles(item, user, layer, translate, gpu=False, join_sentences=Fa
|
||||||
return False
|
return False
|
||||||
src = item.streams()[0].media.path
|
src = item.streams()[0].media.path
|
||||||
|
|
||||||
|
tmp = tempfile.mkdtemp()
|
||||||
|
output = os.pat.join(tmp, "output.json")
|
||||||
|
|
||||||
run_py = os.path.join(os.path.dirname(os.path.abspath(__file__)), "run_whisper.py")
|
run_py = os.path.join(os.path.dirname(os.path.abspath(__file__)), "run_whisper.py")
|
||||||
cmd = ["/opt/whisper-timestamped/bin/python", run_py]
|
cmd = ["/opt/whisper-timestamped/bin/python", run_py]
|
||||||
if language:
|
if language:
|
||||||
|
|
@ -112,16 +115,18 @@ def extract_subtitles(item, user, layer, translate, gpu=False, join_sentences=Fa
|
||||||
cmd += ["--translate"]
|
cmd += ["--translate"]
|
||||||
language = "en"
|
language = "en"
|
||||||
|
|
||||||
cmd += [src]
|
cmd += [src, output]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = subprocess.check_output(cmd)
|
subprocess.check_output(cmd)
|
||||||
except:
|
except:
|
||||||
logger.error(
|
logger.error(
|
||||||
"failed to extract subtitles from item %s\n%s", item.public_id, cmd
|
"failed to extract subtitles from item %s\n%s", item.public_id, cmd
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
response = json.load(response)
|
with open(output) as fd:
|
||||||
|
response = json.load(fd)
|
||||||
|
shutil.rmtree(tmp)
|
||||||
annotations = prepare_annotations(response, join_sentences=join_sentences)
|
annotations = prepare_annotations(response, join_sentences=join_sentences)
|
||||||
if not annotations:
|
if not annotations:
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue