Python 与Tenor'合作;s API

Python 与Tenor'合作;s API,python,api,urllib,gif,animated-gif,Python,Api,Urllib,Gif,Animated Gif,我的问题是我不知道如何处理gif搜索的结果。我使用了一个例子,我知道如何修改一些参数,但我不知道如何构建结果的GIF。代码: import requests import json # set the apikey and limit apikey = "MYKEY" # test value lmt = 8 # load the user's anonymous ID from cookies or some other disk storage # anon_id = <from

我的问题是我不知道如何处理gif搜索的结果。我使用了一个例子,我知道如何修改一些参数,但我不知道如何构建结果的GIF。代码:

import requests
import json

# set the apikey and limit
apikey = "MYKEY"  # test value
lmt = 8

# load the user's anonymous ID from cookies or some other disk storage
# anon_id = <from db/cookies>

# ELSE - first time user, grab and store their the anonymous ID
r = requests.get("https://api.tenor.com/v1/anonid?key=%s" % apikey)

if r.status_code == 200:
    anon_id = json.loads(r.content)["anon_id"]
    # store in db/cookies for re-use later
else:
    anon_id = ""

# our test search
search_term = "love"

# get the top 8 GIFs for the search term
r = requests.get(
    "https://api.tenor.com/v1/search?q=%s&key=%s&limit=%s&anon_id=%s" %   
     (search_term, apikey, lmt, anon_id))

if r.status_code == 200:
    # load the GIFs using the urls for the smaller GIF sizes
    top_8gifs = json.loads(r.content)
    print (top_8gifs)
else:
    top_8gifs = None
导入请求
导入json
#设置apikey和limit
apikey=“MYKEY”#测试值
lmt=8
#从Cookie或其他一些磁盘存储中加载用户的匿名ID
#无符号标识=
#ELSE-第一次用户,获取并存储他们的匿名ID
r=请求。获取(“https://api.tenor.com/v1/anonid?key=%s%apikey)
如果r.status_code==200:
anon_id=json.loads(r.content)[“anon_id”]
#存储在db/Cookie中,以便以后重复使用
其他:
anon_id=“”
#我们的测试搜索
搜索\u term=“爱”
#获取搜索词的前8个GIF
r=requests.get(
"https://api.tenor.com/v1/search?q=%s&key=%s&limit=%s&anon_id=%s" %   
(搜索词、apikey、lmt、anon_id))
如果r.status_code==200:
#使用较小GIF大小的URL加载GIF
top_8gifs=json.loads(r.content)
印刷品(顶部)
其他:
top_8gifs=无
我想下载这个文件。我知道我可以用urllib和request来实现,但问题是我甚至不知道什么是top_8gif


我希望有人能帮助我。我在等你的回答,谢谢你的关注

首先,您必须使用合法密钥而不是MYKEY。完成后,您将观察到这段代码将打印您发送的GET请求的输出。它是一个json文件,类似于python中的字典。因此,现在您可以利用此词典获取URL。最好的策略是简单地打印json的输出,仔细观察字典的结构并从中提取url。如果您想更清楚,我们可以在python中使用pprint模块。它非常棒,将向您展示json文件的正确外观。下面是代码的修改版本,它可以漂亮地打印json文件、打印gif URL并下载gif文件。你可以改进它,如果你想玩它的话

import requests
import json
import urllib.request,urllib.parse,urllib.error
import pprint

# set the apikey and limit
apikey = "YOURKEY"  # test value
lmt = 8

# load the user's anonymous ID from cookies or some other disk storage
# anon_id = <from db/cookies>

# ELSE - first time user, grab and store their the anonymous ID
r = requests.get("https://api.tenor.com/v1/anonid?key=%s" % apikey)

if r.status_code == 200:
    anon_id = json.loads(r.content)["anon_id"]
    # store in db/cookies for re-use later
else:
    anon_id = ""

# our test search
search_term = "love"

# get the top 8 GIFs for the search term
r = requests.get(
    "https://api.tenor.com/v1/search?q=%s&key=%s&limit=%s&anon_id=%s" %   
     (search_term, apikey, lmt, anon_id))

if r.status_code == 200:
    # load the GIFs using the urls for the smaller GIF sizes
    pp = pprint.PrettyPrinter(indent=4)
    top_8gifs = json.loads(r.content)
    pp.pprint(top_8gifs) #pretty prints the json file.
    for i in range(len(top_8gifs['results'])):
        url = top_8gifs['results'][i]['media'][0]['gif']['url'] #This is the url from json.
        print (url)
        urllib.request.urlretrieve(url, str(i)+'.gif') #Downloads the gif file.
else:
    top_8gifs = None
导入请求
导入json
导入urllib.request、urllib.parse、urllib.error
导入pprint
#设置apikey和limit
apikey=“YOURKEY”#测试值
lmt=8
#从Cookie或其他一些磁盘存储中加载用户的匿名ID
#无符号标识=
#ELSE-第一次用户,获取并存储他们的匿名ID
r=请求。获取(“https://api.tenor.com/v1/anonid?key=%s%apikey)
如果r.status_code==200:
anon_id=json.loads(r.content)[“anon_id”]
#存储在db/Cookie中,以便以后重复使用
其他:
anon_id=“”
#我们的测试搜索
搜索\u term=“爱”
#获取搜索词的前8个GIF
r=requests.get(
"https://api.tenor.com/v1/search?q=%s&key=%s&limit=%s&anon_id=%s" %   
(搜索词、apikey、lmt、anon_id))
如果r.status_code==200:
#使用较小GIF大小的URL加载GIF
pp=pprint.预印机(缩进=4)
top_8gifs=json.loads(r.content)
pp.pprint(top_8gifs)#pretty打印json文件。
对于范围内的i(len(top_8gifs['results')):
url=top_8gifs['results'][i]['media'][0]['gif']['url'].#这是来自json的url。
打印(url)
urllib.request.urlretrieve(url,str(i)+'.gif')#下载gif文件。
其他:
top_8gifs=无