← Files AgentBrokoARCHIVED FILE
src/video_forge/captions.py
1022 Bytes · Sep 30, 2026 · 23:15 UTC
from __future__ import annotations
from pathlib import Path
def _stamp(seconds: float) -> str:
milliseconds = round(seconds * 1000)
hours, milliseconds = divmod(milliseconds, 3_600_000)
minutes, milliseconds = divmod(milliseconds, 60_000)
secs, milliseconds = divmod(milliseconds, 1000)
return f"{hours:02}:{minutes:02}:{secs:02},{milliseconds:03}"
def text_to_srt(text: str, output: Path, *, words_per_caption: int = 8, seconds_per_caption: float = 3.0) -> None:
words = text.split()
blocks: list[str] = []
for index in range(0, len(words), words_per_caption):
number = index // words_per_caption + 1
start = (number - 1) * seconds_per_caption
end = start + seconds_per_caption
line = " ".join(words[index:index + words_per_caption])
blocks.append(f"{number}\n{_stamp(start)} --> {_stamp(end)}\n{line}\n")
output.parent.mkdir(parents=True, exist_ok=True)
output.write_text("\n".join(blocks), encoding="utf-8")
SHA-256: 8e4e7432d7d5524118e6a7c4b31178327724f00c21f43ac53cb413d792d896e7