如何使用Python soco播放Sonos播放列表?

如何使用Python soco播放Sonos播放列表?,python,sonos,Python,Sonos,我正在尝试从Python soco加载sonos播放列表,这样我就可以从我的电脑控制音乐 感谢soco的开发者。从我的音乐库中播放个人曲目和流式互联网音频非常方便。我只是不知道如何使用sonos播放列表 设zone为表示Sonos扬声器或扬声器对的SoCo对象。每个区域的zone.contentDirectory中都存储有一个当前队列。我想我需要用播放列表中的曲目替换这个队列,但我还没有找到如何枚举播放列表中的曲目。此外,播放播放列表URI不起作用 sonos播放列表可从中获得 import s

我正在尝试从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()一起播放

>>区域。播放file:///jffs/settings/savedqueues.rsq#28')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist packages/soco/core.py”,第104行,在内部函数中
返回函数(self、*args、**kwargs)
文件“/usr/local/lib/python2.7/dist packages/soco/core.py”,第483行,在play\u uri中
('CurrentURIMetaData',meta)
文件“/usr/local/lib/python2.7/dist packages/soco/services.py”,第181行,在调度程序中
返回self.send_命令(操作,*args,**kwargs)
文件“/usr/local/lib/python2.7/dist packages/soco/services.py”,第408行,在send_命令中
self.handle\u upnp\u错误(response.text)
文件“/usr/local/lib/python2.7/dist packages/soco/services.py”,第469行,在handle\u upnp\u错误中
错误\u xml=xml\u错误
soco.exceptions.SoCoUPnPException:收到UPnP错误714:来自192.168.1.249的非法MIME类型

我想我需要用播放列表uri中的曲目替换队列,但如何获取它们?

您必须使用不同的方法。首先必须清除队列(如果要删除旧曲目),然后可以使用
add_uri\u 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)
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)