所以我试图创建一个通过Volumio的REST API(文档在这里:https://volumio.github.io/docs/API/REST_API.html)与音乐服务器Volumio交互的小程序。基本上,我的程序应该将命令作为输入,将其翻译为REST API请求,发送请求并打印出歌曲的状态和标题。我承认在这里输入一个无效的命令是有空间的,但目前它不是我关心的问题。我担心输入命令后的输出是错误的。下面是代码:Python:在循环内更新
import json
import requests
def controls(cmd):
volumio = requests.get("http://volumio.local:3000/api/v1/getstate")
vol_data = volumio.text
py_data = json.loads(vol_data)
if cmd == 'getstate':
print(py_data['title'], py_data['status'])
else:
requests.get("http://volumio.local:3000/api/v1/commands/?cmd=%s" % cmd)
print(py_data['title'], py_data['status'])
while True:
input = raw_input('Command: ')
controls(input)
基本上,提交例如命令 '暂停' 后,输出应该是:
(u'04 - The Woods.mp3', u'pause')
然后在“再次play'ing:
(u'04 - The Woods.mp3', u'play')
'next'应该简单地改变歌曲名称并保持相同的状态。但这里是我的输出,当我运行:
Command: play
(u'04 - The Woods.mp3', u'pause')
Command: play
(u'04 - The Woods.mp3', u'play') #showing the state from line 1 command
Command: getstate
(u'04 - The Woods.mp3', u'play') #shows correct updated state
Command: next
(u'04 - The Woods.mp3', u'play') #showing wrong song title
Command: getstate
(u'A.T.A.B.', u'play') #updated and showing correct song title from line 7
Command: pause
(u'A.T.A.B.', u'play')
Command: play
(u'A.T.A.B.', u'pause')
Command:
我的输出似乎是一个循环的背后,我想不通为什么。
嗨,因为你正在读取第二个requests.get()之前设置的py_data。从第二个requests.get的结果被扔掉,因为没有变量分配返回值 – Nick