diff --git a/management/commands/generate_clips.py b/management/commands/generate_clips.py index e64ffcc..9fd1c13 100644 --- a/management/commands/generate_clips.py +++ b/management/commands/generate_clips.py @@ -9,6 +9,8 @@ from django.conf import settings import item.models import itemlist.models +from ...render import get_srt + def resolve_roman(s): extra = re.compile('^\d+(.*?)$').findall(s) @@ -101,8 +103,7 @@ class Command(BaseCommand): os.symlink(src, target) subs = [] for sub in vo.annotations.filter(layer="subtitles").exclude(value="").order_by("start"): - sdata = sub.json(keys=['in', 'out', 'value']) - sdata['value'] = sdata['value'].replace('
', '
').replace('
\n', '\n').replace('
', '\n') + sdata = get_srt(sub) subs.append(sdata) voice_over[fragment_id][batch] = { "src": target, diff --git a/render.py b/render.py index d7c60bd..11a6f6c 100644 --- a/render.py +++ b/render.py @@ -538,6 +538,14 @@ def render_all(options): json.dump(_CACHE, fd) +def get_srt(sub, offset=0): + sdata = sub.json(keys=['in', 'out', 'value']) + sdata['value'] = sdata['value'].replace('
', '
').replace('
\n', '\n').replace('
', '\n') + if offset: + sdata["in"] += offset + sdata["out"] += offset + return sdata + def update_subtitles(options): import item.models @@ -563,10 +571,7 @@ def update_subtitles(options): vo = item.models.Item.objects.filter(data__icontains='2-Whispered', data__title__startswith=fragment_id + '_').first() if vo: for sub in vo.annotations.filter(layer="subtitles").exclude(value="").order_by("start"): - sdata = sub.json(keys=['in', 'out', 'value']) - sdata['value'] = sdata['value'].replace('
', '
').replace('
\n', '\n').replace('
', '\n') - sdata["in"] += offset - sdata["out"] += offset + sdata = get_srt(sub, offset) subs.append(sdata) offset += clip['duration'] path = folder / "front.srt"