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"