#sonos #speaker #music

rusty-sonos

一个用于与 Sonos 扬声器进行通信和发现的库

8个版本

0.2.5 2024年3月30日
0.2.4 2023年12月31日
0.1.2 2023年12月20日

#784网络编程

32 每月下载量

MIT 许可证

35KB
692

Rusty-Sonos

crates.io Documentation MIT licensed

一个用 Rust 编写的用于发现和交互 Sonos 扬声器的库。

特性

此库的主要功能是提供一个扬声器发现和扬声器操作的包装器。

发现

要发现当前网络上所有的扬声器,使用 discover_devices()。这将返回关于找到的任何扬声器的相关信息(包括IP地址)。内部使用SSDP协议。

要获取特定扬声器的信息,给定其IP地址,使用 get_speaker_info()

扬声器交互

通过一个名为 Speaker 的单一结构体与扬声器交互,该结构体具有所有已实现的特性的方法。要使用 Speaker,你必须知道扬声器的IP地址(有关如何找到此信息,请参阅发现部分)

use rusty_sonos::speaker::Speaker;
use std::net::Ipv4Addr;

let ip_addr = Ipv4Addr::from_str("192.168.1.0").unwrap();

let speaker = Speaker::new(ip_addr).await.unwrap();

speaker.play().await.unwrap(); // plays the current track

以下提供了扬声器方法的不完整列表和描述

  • play:开始或继续播放当前曲目
  • pause:暂停当前曲目的播放
  • get_current_track:返回有关当前曲目的信息
  • set_current_uri:从URI设置当前曲目
  • get_volume:返回当前音量
  • set_volume:将音量设置为给定值
  • get_playback_status:获取播放状态(播放、暂停等)
  • seek:从提供的曲目时间(hh:mm:ss)开始播放
  • get_queue:返回队列中当前曲目
  • enter_queue:进入队列
  • add_track_to_queue:将曲目添加到队列
  • move_to_next_track:跳转到下一曲目
  • move_to_previous_track:跳转到上一曲目
  • clear_queue:从队列中删除所有曲目
  • end_external_control:结束由外部服务(如Spotify)对扬声器的控制

注意

通常,扬声器的API基于UPnP

这些非官方文档被用来构建这个库。它们包含关于各种服务、端点和响应的信息。

依赖项

~3–14MB
~207K SLoC