如何通过Brython获得API响应?

时间:2020-03-09 19:16:55

标签: python api browser local-storage brython

我正在尝试做一个小功能,以通过大型项目Brython(浏览器Python)从Spotify的API获取响应。

问题在于,当我尝试获取localStorage['apiResponse']时似乎无法正常工作,因为Python似乎不等待on_complete完成并继续执行主函数而不必担心localStorage目前为空(这使我得到了空字符串而不是API响应。

我尝试了很多事情,例如set_timeout()aio.sleep(在异步函数中),但它们都不等待执行结束并继续执行程序的其余部分

while循环还会冻结浏览器...(如this question中所述)

from browser import ajax #to make requests
from browser.local_storage import storage as localStorage #to access HTML5 Local Storage

import json #to convert a json-like string into a Python Dict

#Request to the API
def on_complete(req):
    if req.status==200 or req.status==0:
        localStorage['apiResponse'] = req.text
    else:
        print("An error occured while asking Spotify for data")

def apiRequest(requestUrl, requestMethod):
    req = ajax.ajax()
    req.bind('complete', on_complete)
    req.open(requestMethod, requestUrl, True)
    req.set_header('Authorization', localStorage['header'])
    req.send()

localStorage['header']中有一个我的令牌头,供那些想知道的人使用。

问题并非出自API的请求,因为我可以在Chrome DevTools的“网络”标签中看到该请求。

Python 3和Brython 3.8.7

0 个答案:

没有答案