0
我想從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中的曲目替換隊列,但是如何獲取它們?
謝謝!簡單,它的作品。 – gripsnarl