use anyhow::{Context, Result};
use mpris::PlayerFinder;
fn main() {
match print_metadata() {
Ok(_) => {}
Err(error) => {
println!("Error: {}", error);
for (i, cause) in error.chain().skip(1).enumerate() {
print!("{}", " ".repeat(i + 1));
println!("Caused by: {}", cause);
}
std::process::exit(1);
}
}
}
fn print_metadata() -> Result<()> {
let player_finder = PlayerFinder::new().context("Could not connect to D-Bus")?;
let player = player_finder
.find_active()
.context("Could not find any player")?;
println!(
"Found {identity} (on bus {bus_name})",
bus_name = player.bus_name(),
identity = player.identity(),
);
let metadata = player
.get_metadata()
.context("Could not get metadata for player")?;
println!("Metadata:\n{:#?}\n", metadata);
Ok(())
}