关于这个问题的许多解决方案都是通过简单地使用Requests库来解决的,但是当我试图使用Requests库来访问Genius api时,它没有正确地授权,使用urllib时,它的描述是The access token is expired, revoked, malformed, or invalid for other reasons.
,它可以正确地授权和访问api而不会出错,除非HTTP版本不受支持的错误再次出现,这通常是在第一个GET请求之后。我也尝试过this solution,但也无法解决错误。如何修复此错误,以便访问Genius api?我的源代码如下所示
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
目前没有回答
相关问题 更多 >
编程相关推荐