AliJabbarpour commited on
Commit
fb840b6
·
verified ·
1 Parent(s): ea92996

Update pipeline/postprocess.py

Browse files
Files changed (1) hide show
  1. 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
- lines.append(f"{index}\n{start_tc} --> {end_tc}\n{text}")
 
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