如何使用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

回到顶部