2015-09-07 14 views
1

我想用python 3製作我自己的歌曲應用程序。我已經從pip3命令安裝SoCo。我目前有這個腳本(稱爲find.py)。Soco,在組中暫停

import time, soco, sys 
def search_for_speaker(speaker_name): 
    global zone_list 
    zone_list = list(soco.discover()) 

    for speaker in zone_list: 
     if speaker.player_name == speaker_name: 
      global player 
      player = speaker 

search_for_speaker(sys.argv[1]) 
player.pause() 
time.sleep(1) 
player.play() 

在我的房子我有揚聲器被稱爲HallwayKitchenLiving RoomHallwayKitchen在一個組中,而Living Room是獨立的。

當我運行python3 find.py Living\ Room時,腳本暫停講話者然後再次播放。當我運行python3 find.py Kitchen時也是如此。問題是當我嘗試python3 find.py Hallway。我最終得到這個錯誤。

Traceback (most recent call last): 
    File "find.py", line 12, in <module> 
    player.pause() 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/soco/core.py", line 94, in inner_function 
    raise SoCoSlaveException(message) 
soco.exceptions.SoCoSlaveException: The method or property "pause" can only be called/used on the coordinator in a group 

我想這是因爲揚聲器kitchen是「主」的揚聲器,而「走廊」一個不是」。

我需要做些什麼才能做到這一點?我希望能夠播放/暫停下一首/上一首曲目並更改音量。

我知道運行腳本時不過我不打算通過命令行來運行它,相反這將是從更好的觸控工具遠程(IOS)

回答

3

的我可以改變的講話者的姓名答案是例外:當Sonos玩家分組時,一個玩家扮演「組協調員」的特殊角色。所有影響整個組狀態的命令都需要發送到組協調器。在釤鈷,您可以通過調用

player.group.coordinator.play() 

免責聲明做到這一點:釤鈷是(一個真棒圖書館和)不支持或認可的Sonos。