Genius API无法与aiohttp配合使用?

时间:2018-08-28 18:09:31

标签: python-3.x python-asyncio aiohttp genius-api

我有一个机器人,该机器人通过使用aiohttp进行请求来访问Genius API。 该API以前曾经可以与aiohttp一起正常工作,但现在看来似乎不起作用。 API现在返回此值:

{'meta': {'message': 'This call requires an access_token. Please see: '
                 'https://genius.com/developers',
         'status': 401}}

这是我编写的用于Genius API的aiohttp代码,该代码一直使用到最近。

import asyncio
import aiohttp
import pprint

BASE_URL = "http://api.genius.com"
HEADERS = {'Authorization': 'Bearer {access-token here}'}
SONG_TITLE = "any song title"

async def get_lyrics():

   search_url = BASE_URL + "/search"
   data = {'q': SONG_TITLE}

   conn = aiohttp.TCPConnector(ssl=False)
   async with aiohttp.ClientSession(connector=conn) as session:
      async with session.get(search_url, params=data, headers=HEADERS) as response:
         json = await response.json()

    pprint.pprint(json)

loop = asyncio.get_event_loop()
loop.run_until_complete(get_lyrics())

为确保访问令牌或授权没有问题,请使用requests尝试使用与上面完全相同的代码,然后从API返回预期的结果。使用requests作参考的代码。

import requests
import pprint

BASE_URL = "http://api.genius.com"
HEADERS = {'Authorization': 'Bearer {access-token here}'}
SONG_TITLE = "any song title"
SEARCH_URL = BASE_URL + "/search"
DATA = {'q': SONG_TITLE}
RESPONSE = requests.get(SEARCH_URL, params=DATA, headers=HEADERS)
JSON = RESPONSE.json()
pprint.pprint(JSON)  

为什么Genius API在使用aiohttp时会给出401,但是在requests下可以正常工作。我想念什么吗? aiohttp版本是3.3.2,python版本是3.7.0。

0 个答案:

没有答案