mirror of
https://github.com/G2-Games/minidisc-cli.git
synced 2025-04-19 11:42:53 -05:00
57 lines
1.9 KiB
Rust
57 lines
1.9 KiB
Rust
use minidisc_rs::netmd::interface;
|
|
use cross_usb::usb::Device;
|
|
use cross_usb::device_filter;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
// Can find devices this way
|
|
let filter = vec![
|
|
device_filter!{vendor_id:0x054c,product_id:0x0186}, // MZ-NH600
|
|
device_filter!{vendor_id:0x054c,product_id:0x00c9}, // MZ-NF610
|
|
];
|
|
|
|
let device = cross_usb::get_device_filter(filter).await.expect("No device found matching critera");
|
|
|
|
dbg!(device.vendor_id().await);
|
|
|
|
// Ensure the player is a minidisc player and not some other random device
|
|
let mut player_controller = match interface::NetMDInterface::new(&device).await {
|
|
Ok(player) => player,
|
|
Err(err) => {
|
|
dbg!(err);
|
|
panic!();
|
|
},
|
|
};
|
|
|
|
println!(
|
|
"Player Model: {}",
|
|
player_controller
|
|
.net_md_device
|
|
.device_name()
|
|
.await
|
|
.clone()
|
|
.unwrap()
|
|
);
|
|
|
|
let now = std::time::Instant::now();
|
|
let half_title = player_controller.disc_title(false).await.unwrap_or("".to_string());
|
|
let full_title = player_controller.disc_title(true).await.unwrap_or("".to_string());
|
|
println!(
|
|
"Disc Title: {} | {}",
|
|
half_title,
|
|
full_title
|
|
);
|
|
|
|
let track_count = player_controller.track_count().await.unwrap();
|
|
println!("{}", track_count);
|
|
let track_titles = player_controller.track_titles((0..track_count).collect(), false).await.unwrap();
|
|
let track_titlesw = player_controller.track_titles((0..track_count).collect(), true).await.unwrap();
|
|
let track_lengths = player_controller.track_lengths((0..track_count).collect()).await.unwrap();
|
|
for (i, track) in track_titles.iter().enumerate() {
|
|
println!(
|
|
"Track {i} Info:\n Title: {track} | {}\n Length: {:?}",
|
|
track_titlesw[i], track_lengths[i]
|
|
);
|
|
}
|
|
println!("{:?}", now.elapsed());
|
|
}
|