2017-12-02 6 views
0

내 PC에서 음악을 제어 할 수 있도록 Python soco에서 sonos 재생 목록을로드하려고합니다.Python soco를 사용하여 Sonos 재생 목록을 재생하려면 어떻게해야합니까?

soco 개발자에게 감사드립니다. 내 음악 보관함에서 개별 트랙을 재생하고 인터넷 오디오를 스트리밍하는 것이 매우 편리합니다. sonos 재생 목록을 사용하는 방법을 알아 내지 못했습니다.

zone은 Sonos 스피커 또는 스피커 쌍을 나타내는 SoCo 객체가되도록합니다. 각 영역에는 현재 영역의 zone.contentDirectory에 저장된 대기열이 있습니다. 이 대기열을 재생 목록의 트랙으로 대체해야한다고 생각하지만 재생 목록의 트랙을 열거하는 방법을 찾지 못했습니다. 또한 재생 목록 URI 재생이 작동하지 않습니다.

SONOS 재생 목록의 목록은, 내가 재생 목록의 세부 사항을 볼 때 특정 재생 목록

pl = zone.get_sonos_playlist_by_attr('title', 'Dance'). 

으로 제목으로 사용할 수있는 유일한 트랙 정보

import soco 

zone = soco.Soco('192.168.1.249') 
zone.get_playlists() 

함께 사용할 수 있습니다 Sonos 장치의 uri 인 것 같습니다.

>>> pprint(pl.to_dict()) 
{u'desc': None, 
u'item_id': u'SQ:28', 
u'parent_id': u'SQ:', 
u'resources': [{u'bitrate': None, 
       u'bits_per_sample': None, 
       u'color_depth': None, 
       u'duration': None, 
       u'import_uri': None, 
       u'nr_audio_channels': None, 
       u'protection': None, 
       u'protocol_info': 'file:*:audio/mpegurl:*', 
       u'resolution': None, 
       u'sample_frequency': None, 
       u'size': None, 
       u'uri': 'file:///jffs/settings/savedqueues.rsq#28'}], 
u'restricted': True, 
u'title': u'Dance'} 

하지만이 uri는 zone.play_uri()와 함께 재생할 수 없습니다.

>>> zone.play_uri('file:///jffs/settings/savedqueues.rsq#28') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/soco/core.py", line 104, in inner_function 
    return function(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/soco/core.py", line 483, in play_uri 
    ('CurrentURIMetaData', meta) 
    File "/usr/local/lib/python2.7/dist-packages/soco/services.py", line 181, in _dispatcher 
    return self.send_command(action, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/soco/services.py", line 408, in send_command 
    self.handle_upnp_error(response.text) 
    File "/usr/local/lib/python2.7/dist-packages/soco/services.py", line 469, in handle_upnp_error 
    error_xml=xml_error 
soco.exceptions.SoCoUPnPException: UPnP Error 714 received: Illegal MIME-Type from 192.168.1.249 

대기열을 재생 목록 uri의 트랙으로 교체해야한다고 생각하지만 어떻게해야합니까?

답변

0

다른 방법을 사용해야합니다. 처음에는 대기열을 지워야합니다 (이전 트랙을 삭제하려는 경우) add_uri_to_queue을 사용하여 재생 목록 트랙을 Sonos 대기열에 추가하고 마지막으로 play을 사용할 수 있습니다.

import soco 

sonos = soco.SoCo("192.168.1.249") 

uri = "file:///jffs/settings/savedqueues.rsq#28" 
sonos.clear_queue() 
sonos.add_uri_to_queue(uri=uri) 
sonos.play_from_queue(index=0) 
+0

감사합니다. 단순하고 작동합니다. – gripsnarl