timestamped_subtitles/
timestamped_subtitles.rs

1use 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}