From bb9f8fc445aaf11c43fdc9b64d79457efd5136a1 Mon Sep 17 00:00:00 2001 From: j Date: Thu, 29 Jan 2026 13:04:05 +0100 Subject: [PATCH] subtitle formating --- render_utils.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/render_utils.py b/render_utils.py index dbe706e..1bde2b8 100644 --- a/render_utils.py +++ b/render_utils.py @@ -1,10 +1,11 @@ import re import os -import ox import lxml.etree +import ox from .render_kdenlive import melt_xml +from .utils import format_duration def parse_lang(lang): @@ -57,16 +58,20 @@ def get_clip_by_seqid(clips, seqid): return None -def get_scene_duration(scene): +def get_scene_duration(scene, fps=24, track=None): if isinstance(scene, str): with open(scene) as fd: scene = json.load(fd) duration = 0 for key, value in scene.items(): for name, clips in value.items(): - for clip in clips: - duration += int(clip["duration"] * 24) - return duration / 24 + if track and '%s:%s' % (key, name) != track: + continue + if clips: + for clip in clips: + duration += round(clip["duration"] * fps) + #print("scene duration based on %s:%s is %s %s" % (key, name, duration / fps, format_duration(duration / fps, fps))) + return duration / fps def get_offset_duration(prefix): @@ -183,6 +188,7 @@ Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, stop = ass_timestamp(sub["out"]) for lang in reversed(langs): value = sub["values"][lang] + value = value.replace('\n', '\\N') event = f"Dialogue: 0,{start},{stop},{lang},,0,0,0,,{value}" events.append(event) ass += "\n\n[Events]\n" + "\n".join(events) + "\n"