other parts write to stdout, write output to tmp file

This commit is contained in:
j 2025-01-24 09:54:39 +05:30
parent f6a1d168ee
commit ecf5effc83
2 changed files with 13 additions and 6 deletions

View file

@ -30,11 +30,13 @@ def transcribe(path, language=None, translate=None):
if __name__ == "__main__":
usage = "usage: %(prog)s [options] path"
usage = "usage: %(prog)s [options] path output"
parser = ArgumentParser(usage=usage, prog="run_whisper")
parser.add_argument("-l", "--language", dest="language", 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()
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)

View file

@ -104,6 +104,9 @@ def extract_subtitles(item, user, layer, translate, gpu=False, join_sentences=Fa
return False
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")
cmd = ["/opt/whisper-timestamped/bin/python", run_py]
if language:
@ -112,16 +115,18 @@ def extract_subtitles(item, user, layer, translate, gpu=False, join_sentences=Fa
cmd += ["--translate"]
language = "en"
cmd += [src]
cmd += [src, output]
try:
response = subprocess.check_output(cmd)
subprocess.check_output(cmd)
except:
logger.error(
"failed to extract subtitles from item %s\n%s", item.public_id, cmd
)
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)
if not annotations:
return False