У меня есть бот, который обращается к 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.