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 許可下發布的。