Как я могу исправить ошибку HTTP версии не поддерживается при доступе к Genius API? - PullRequest
0 голосов
/ 04 июня 2019

Многие решения, касающиеся этой проблемы, решаются простым использованием библиотеки запросов, однако, когда я пытаюсь использовать библиотеку запросов для доступа к API Genius, она неправильно авторизуется, с описанием, The access token is expired, revoked, malformed, or invalid for other reasons. При использовании urllib, он может авторизовать и получить доступ к API должным образом без ошибок, если ошибка HTTP версии не поддерживается снова, как правило, после первого запроса GET. Я также пробовал это решение , но оно также не устраняет ошибку. Что я могу сделать, чтобы исправить эту ошибку, чтобы получить доступ к API Genius? Мой исходный код показан ниже.

def find_lyrics(info):
# https://github.com/jasonqng/genius-lyrics-search/blob/master/search.py for accessing api
"""
Given info is list containing [author, title]
"""
search_req = Request("http://api.genius.com/search?q=" + " ".join(info))
search_req.add_header("Authorization", "Bearer " + TOKEN)
search_req.add_header("User-Agent", "curl/7.9.8 (i686-pc-linux-gnu) libcurl 7.9.8 (OpenSSL 0.9.6b) (ipv6 enabled)") #Must include user agent of some sort, otherwise 403 returned

while True:
    try:
        search_res = urlopen(search_req, timeout=4) #timeout set to 4 seconds; automatically retries if times out
        search_raw = search_res.read()
    except socket.timeout:
        print("Timeout raised and caught")
        continue
    break

print(search_raw["meta"]["status"])
print(search_raw["response"]["hits"])
return search_raw
...