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"