timestamped_subtitles/
timestamped_subtitles.rs1use ass_parser::{self, AssFile, ScriptInfo, V4Format, Events, AssFileOptions, Dialogue};
2use ass_parser::IndexNotFound;
3use hex_color::HexColor;
4
5fn main() -> Result<(), IndexNotFound>{
6 let mut ass_file = AssFile::new();
7 let hexcolor = AssFileOptions::get_ass_color(HexColor::YELLOW);
8
9 let first_dialogue = Dialogue::default()
10 .set_start("0:00:00.10")
11 .set_end("0:00:00.50")
12 .set_text("Hello There.");
13
14 let second_dialogue = Dialogue::default()
15 .set_start("00:00.50")
16 .set_end("00:00.58")
17 .set_text("Hello Friend.");
18
19 let third_dialogue = Dialogue::default()
20 .set_start("0:00:00.58")
21 .set_end("0:00:01.01")
22 .set_text("Goodbye Friend.");
23
24 let events = Events::new()
25 .add_first_dialogue(first_dialogue)?
26 .add_dialogue(second_dialogue)
27 .add_dialogue(third_dialogue)
28 .create();
29
30
31 ass_file.components.script
32 .set_script(ScriptInfo::default())
33 .set_scripttype("FFMPEG");
34
35 ass_file.components.v4
36 .set_v4(V4Format::default())
37 .set_primarycolour(&hexcolor);
38
39 ass_file.components.events
40 .set_events(events);
41
42 AssFile::save_file(&ass_file, "new_subtitles.ass");
43
44 Ok(())
45
46}