Update pipeline/postprocess.py
Browse files- pipeline/postprocess.py +27 -1
pipeline/postprocess.py
CHANGED
|
@@ -167,6 +167,31 @@ def split_long_segment(seg: dict) -> list:
|
|
| 167 |
return split_long_segment(seg1) + split_long_segment(seg2)
|
| 168 |
|
| 169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
def build_srt(segments: list) -> str:
|
| 171 |
lines = []
|
| 172 |
index = 1
|
|
@@ -176,7 +201,8 @@ def build_srt(segments: list) -> str:
|
|
| 176 |
continue
|
| 177 |
start_tc = format_timestamp(seg["start"])
|
| 178 |
end_tc = format_timestamp(seg["end"])
|
| 179 |
-
|
|
|
|
| 180 |
index += 1
|
| 181 |
return "\n\n".join(lines) + "\n"
|
| 182 |
|
|
|
|
| 167 |
return split_long_segment(seg1) + split_long_segment(seg2)
|
| 168 |
|
| 169 |
|
| 170 |
+
def wrap_text(text: str, max_chars: int = 42) -> str:
|
| 171 |
+
"""اگه متن بیشتر از max_chars بود، به دو خط تقسیم کن"""
|
| 172 |
+
if len(text) <= max_chars:
|
| 173 |
+
return text
|
| 174 |
+
|
| 175 |
+
words = text.split()
|
| 176 |
+
best_break = -1
|
| 177 |
+
best_diff = float('inf')
|
| 178 |
+
|
| 179 |
+
current_len = 0
|
| 180 |
+
for i, word in enumerate(words):
|
| 181 |
+
current_len += len(word) + (1 if i > 0 else 0)
|
| 182 |
+
diff = abs(current_len - len(text) / 2)
|
| 183 |
+
if diff < best_diff:
|
| 184 |
+
best_diff = diff
|
| 185 |
+
best_break = i + 1
|
| 186 |
+
|
| 187 |
+
if best_break <= 0 or best_break >= len(words):
|
| 188 |
+
return text
|
| 189 |
+
|
| 190 |
+
line1 = " ".join(words[:best_break])
|
| 191 |
+
line2 = " ".join(words[best_break:])
|
| 192 |
+
return f"{line1}\n{line2}"
|
| 193 |
+
|
| 194 |
+
|
| 195 |
def build_srt(segments: list) -> str:
|
| 196 |
lines = []
|
| 197 |
index = 1
|
|
|
|
| 201 |
continue
|
| 202 |
start_tc = format_timestamp(seg["start"])
|
| 203 |
end_tc = format_timestamp(seg["end"])
|
| 204 |
+
wrapped = wrap_text(text)
|
| 205 |
+
lines.append(f"{index}\n{start_tc} --> {end_tc}\n{wrapped}")
|
| 206 |
index += 1
|
| 207 |
return "\n\n".join(lines) + "\n"
|
| 208 |
|