From a50e88b7f9e3ad72eea6619d01a09fdc2fd275a1 Mon Sep 17 00:00:00 2001
From: Sting <lallegre26@gmail.com>
Date: Wed, 12 Jul 2023 18:55:45 +0200
Subject: [PATCH] Splitting ASS into several lines

---
 assUtils.py | 18 +++++++++++++++---
 autokara.py |  2 +-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/assUtils.py b/assUtils.py
index 510e639..3345d5b 100644
--- a/assUtils.py
+++ b/assUtils.py
@@ -51,12 +51,24 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
 '''
         self.file.write(header)
 
-    def writeSyls(self, syl_timings):
+    def writeSyls(self, syl_timings, syls_per_line=10000):
         last_syl_dur = 500
-        start_time = timeToDate(syl_timings[0][0])
+        syl_index = 0
+        while syl_index < (len(syl_timings) - syls_per_line):
+            start_time = timeToDate(syl_timings[syl_index][0])
+            end_time = timeToDate(syl_timings[syl_index + syls_per_line][0])
+            line = f'Dialogue: 0,{start_time},{end_time},Default,,0,0,0,,'
+            for i in range(syl_index, syl_index + syls_per_line):
+                syl_dur = round((syl_timings[i+1][0] - syl_timings[i][0]) * 100)
+                line += f'{{\k{syl_dur:d}}}{syl_timings[i][1]:s}'
+            line += '\n'
+            self.file.write(line)
+            syl_index += syls_per_line
+
+        start_time = timeToDate(syl_timings[syl_index][0])
         end_time = timeToDate(syl_timings[-1][0] + last_syl_dur//100)
         line = f'Dialogue: 0,{start_time},{end_time},Default,,0,0,0,,'
-        for i in range(len(syl_timings) - 1):
+        for i in range(syl_index, len(syl_timings) - 1):
             syl_dur = round((syl_timings[i+1][0] - syl_timings[i][0]) * 100)
             line += f'{{\k{syl_dur:d}}}{syl_timings[i][1]:s}'
         line += f'{{\k{last_syl_dur:d}}}{syl_timings[-1][1]:s}\n'
diff --git a/autokara.py b/autokara.py
index 033aaf4..e7f69b1 100644
--- a/autokara.py
+++ b/autokara.py
@@ -48,6 +48,6 @@ print("Syls found, writing ASS file...")
 writer = AssWriter()
 writer.openAss(ass_file)
 writer.writeHeader()
-writer.writeSyls(syls)
+writer.writeSyls(syls, syls_per_line=10)
 writer.closeAss()
 
-- 
GitLab