SoCo(Sonos 控制器)是一个 Python 库,允许您以编程方式控制 Sonos 扬声器。它最初是由 Rahim Sonawalla 在悉尼音乐黑客日创建的,现在由一个团队在其 GitHub 存储库中开发
有关该项目的更多背景信息,请参阅 Rahim 的博客文章。
请访问 SoC 文档以获取更详细的功能概述。
Sonos 改变了音乐服务帐户信息的获取方式。这意味着目前一组音乐服务会出现身份验证问题,根本无法使用。该组织的已知成员包括:Google Play Music、Apple Music、Amazon Music、Spotify 和 Napster。
问题 #557 是此问题的元问题,您可以使用它来跟踪解决问题的进度,但请不要在那里发布“我也是”评论。此外,没有必要就此提出任何更多单独的问题。如果您有其他音乐服务应该出现在列表中,请在 #557 中发表评论
从 v0.26.0 开始,新的音乐服务支持已恢复,但存在一些已知问题。测试和问题报告将不胜感激。
SoCo 需要 Python 3.6 或更高版本。
使用点:
pip install soco
SoCo 依赖于许多 Python 包。如果您使用 pip 安装 Soco,则会自动为您安装依赖项。如果没有,您可以检查requirements.txt 文件中的要求。
您可以通过 SoC 对象与 Sonos Zone Player 进行交互。如果您知道Zone Player的IP地址,则可以直接创建一个SoC对象:
>> > from soco import SoCo
>> > my_zone = SoCo ( '192.168.1.101' )
>> > my_zone . player_name
Kitchen
>> > my_zone . status_light = True
>> > my_zone . volume = 6
但也许最简单的方法是使用模块级发现功能。这将找到网络上的所有区域播放器,并返回包含它们的 python 集:
>> > from soco import discover
>> > for zone in discover ():
... print ( zone . player_name )
Living Room
Kitchen
如果您更喜欢列表而不是集合:
>> > zone_list = list ( discover ())
>> > zone_list
[ SoCo ( "192.168.1.101" ), SoCo ( "192.168.1.102" )]
>> > zone_list [ 0 ]. mute = True
当然,你还可以播放音乐!
#!/usr/bin/env python
from soco import SoCo
if __name__ == '__main__' :
sonos = SoCo ( '192.168.1.102' ) # Pass in the IP of your Sonos speaker
# You could use the discover function instead, if you don't know the IP
# Pass in a URI to a media file to have it streamed through the Sonos
# speaker
sonos . play_uri (
'http://ia801402.us.archive.org/20/items/TenD2005-07-16.flac16/TenD2005-07-16t10Wonderboy.mp3' )
track = sonos . get_current_track_info ()
print ( track [ 'title' ])
sonos . pause ()
# Play a stopped or paused track
sonos . play ()
如果您需要 SoCo 的支持,请随时在 SoCo Gitter Room 中发布您的问题。
为了展示可以使用 SoCo 制作的内容, examples
夹中包含了一个简单的 Web 应用程序。
网络应用程序的屏幕截图
SoCo 支持以下控件:
SoCo 还支持从Python 到所有Sonos 服务(例如ContentDirectory 或RenderingControl)的较低级别访问。
Socos是一个用于控制 Sonos 设备的命令行工具。它是与 Soco 联合开发的,但位于单独的存储库中。
SoCo-CLI (soco-cli) 是一个强大且功能齐全的命令行工具,适用于脚本、计划任务等。它支持基于时间和基于状态的操作,以及使用循环的重复命令。本地文件系统上的音频文件可以通过命令行直接在 Sonos 上播放。支持多户 Sonos 系统。
更多 Ruby 粉丝?没问题,Sam Soffes 正在构建一个很棒的 Ruby gem。
正在寻找一个不仅仅是示例项目的 GUI? Joel Björkman 正在构建 Sonos 控制器 GUI,非常适合 Linux 上没有官方 Sonos 控制器应用程序的用户!在这里查找、分叉并做出贡献:https://github.com/labero/SoCo-Tk。
有一个 SoCo Gitter 讨论室。请随时前来寻求与 SoCo 相关的支持、想法或随意交谈。
SoCo 是在 MIT 许可下发布的。