7 releases (3 stable)
2.0.0 | Sep 16, 2023 |
---|---|
1.1.0 | Jan 15, 2021 |
1.0.0 | Dec 23, 2020 |
0.1.3 | Aug 8, 2020 |
0.1.2 | Apr 28, 2020 |
#493 in Asynchronous
58 downloads per month
Used in sinuous
42KB
879 lines
This crate is a Sonos controller library written in Rust. It operates asynchronously and aims for a simple to use yet powerful API.
Example
let speaker = sonor::find("your room name", Duration::from_secs(2)).await?
.expect("room exists");
println!("The volume is currently at {}", speaker.volume().await?);
match speaker.track().await? {
Some(track_info) => println!("- Currently playing '{}", track_info.track()),
None => println!("- No track currently playing"),
}
speaker.clear_queue().await?;
speaker.join("some other room").await?;
For a full list of actions implemented, look at the Speaker docs.
If your use case isn't covered, this crate also exposes the raw UPnP Action API here. It can be used like this:
use sonor::URN;
let service = URN::service("schemas-upnp-org", "GroupRenderingControl", 1);
let args = "<InstanceID>0</InstanceID>";
let response = speaker.action(&service, "GetGroupMute", args).await?;
println!("{}", response["CurrentMute"]);
Dependencies
~5–14MB
~166K SLoC