Genius API не работает с aiohttp? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть бот, который обращается к API Genius, делая запросы с помощью aiohttp. Раньше API хорошо работал с aiohttp, но теперь, похоже, он не работает. API возвращает это сейчас:

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

Вот код aiohttp, который я написал для работы с Genius API, который работал до недавнего времени.

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 выдает 401 при использовании aiohttp, но работает как ожидалось с requests. Я что-то пропустил? Версия aiohttp: 3.3.2, версия python - 3.7.0.

...