mprizzle

Crates.iomprizzle
lib.rsmprizzle
version0.0.8
created_at2025-05-03 00:49:04.896603+00
updated_at2025-05-08 00:14:29.08201+00
descriptionAn async library for interacting with mpris over D-Bus.
homepagehttps://github.com/qxb3/mprizzle
repositoryhttps://github.com/qxb3/mprizzle
max_upload_size
id1658370
size77,983
(qxb3)

documentation

README

mprizzle

An async library for interacting with mpris over D-BUS

Installing

[dependecies]
mprizzle = "0.0.2"

Usage

use mprizzle::{Mpris, MprisEvent};

#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut mpris = Mpris::new_without_options().await?;
    let shared_players = mpris.players();

    mpris.watch();

    while let Ok(event) = mpris.recv().await? {
        match event {
            MprisEvent::PlayerAttached(identity) => println!("NEW PLAYER = {}", identity.short()),
            MprisEvent::PlayerDetached(identity) => println!("REMOVED PLAYER = {}", identity.short()),

            MprisEvent::PlayerPropertiesChanged(identity) => {
                let players = shared_players.lock().await;
                if let Some(player) = players.iter().find(|p| *p.identity() == identity) {
                    println!("PLAYER PROP CHANGED: {} = {:#?}", identity.short(), player.metadata().await?);
                }
            },

            MprisEvent::PlayerSeeked(identity) => {
                let players = shared_players.lock().await;
                if let Some(_) = players.iter().find(|p| *p.identity() == identity) {
                    println!("PLAYER SEEKED: {}", identity.short());
                }
            },

            MprisEvent::PlayerPosition(identity, position) => {
                println!("PLAYER POSITION: {} = {}", identity.short(), position.as_secs());
            }
        }
    }

    Ok(())
}

Documentation

Documentation is available at docs.rs.

Contributing

Feel free! :D

Commit count: 19

cargo fmt