parsetoc/
parsetoc.rs

1use discid::DiscId;
2
3fn main() {
4    let toc = "1 11 242457 150 44942 61305 72755 96360 130485 147315 164275 190702 205412 220437";
5    let result = DiscId::parse(toc);
6
7    match result {
8        Ok(disc) => print_disc_info(disc),
9        Err(e) => {
10            eprintln!("{}", e);
11            std::process::exit(1);
12        }
13    }
14}
15
16fn print_disc_info(disc: DiscId) {
17    println!("DiscID      : {}", disc.id());
18    println!("FreeDB ID   : {}", disc.freedb_id());
19    println!("TOC         : {}", disc.toc_string());
20    println!("First track : {}", disc.first_track_num());
21    println!("Last track  : {}", disc.last_track_num());
22    println!("Sectors     : {}\n", disc.sectors());
23
24    for track in disc.tracks() {
25        println!("Track #{}", track.number);
26        println!("    Offset  : {}", track.offset);
27        println!("    Sectors : {}", track.sectors);
28    }
29
30    println!("\nSubmit via {}", disc.submission_url());
31}