1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use discid::{DiscId, Features};
use std::env;
fn main() {
let arg1 = env::args().nth(1).unwrap_or_default();
let device = if !arg1.is_empty() {
Some(&arg1[..])
} else {
None
};
let result = DiscId::read_features(device, Features::all());
match result {
Ok(disc) => print_disc_info(disc),
Err(e) => {
eprintln!("{}", e);
std::process::exit(1);
}
}
}
fn print_disc_info(disc: DiscId) {
println!("DiscID : {}", disc.id());
println!("FreeDB ID : {}", disc.freedb_id());
println!("TOC : {}", disc.toc_string());
println!("MCN : {}", disc.mcn());
println!("First track : {}", disc.first_track_num());
println!("Last track : {}", disc.last_track_num());
println!("Sectors : {}\n", disc.sectors());
for track in disc.tracks() {
println!("Track #{}", track.number);
println!(" ISRC : {}", track.isrc);
println!(" Offset : {}", track.offset);
println!(" Sectors : {}", track.sectors);
}
}