如何使用Python soco播放Sonos播放列表?
我想从Python soco加载一个sonos播放列表,这样我就可以从我的电脑上控制音乐了。如何使用Python soco播放Sonos播放列表?
感谢soco的开发者。从我的音乐库播放单个曲目以及流式传输互联网音频非常方便。我只是没有想出如何使用sonos播放列表。
让zone成为表示Sonos扬声器或扬声器对的SoCo对象。每个区域都有一个当前队列存储在其zone.contentDirectory中。我想我需要用播放列表中的曲目替换此队列,但我还没有找到如何列举播放列表中的曲目。另外,播放播放列表URI不起作用。
SONOS播放列表可与
import soco zone = soco.Soco('192.168.1.249')
zone.get_playlists()
具体的播放列表可通过其标题与
pl = zone.get_sonos_playlist_by_attr('title', 'Dance').
当我看到在播放列表的细节,唯一的轨道信息 似乎是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中的曲目替换队列,但是如何获取它们?
回答:
你必须使用不同的方法。首先你必须清除队列(如果你想删除旧的轨道),那么你可以使用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)
以上是 如何使用Python soco播放Sonos播放列表? 的全部内容, 来源链接: utcz.com/qa/257659.html