You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Tenor API使用问题:如何处理GIF搜索结果并构建GIF

处理Tenor API返回结果并构建GIF的完整方案

没问题,我来帮你搞定Tenor API返回结果的处理和GIF构建的问题!下面一步步给你讲清楚怎么做:

1. 先补全并完善API请求代码

你之前的代码没写完获取匿名ID和搜索请求的部分,我帮你补全并优化:

import requests
import json
from PIL import Image
import io
import imageio

# 设置你的Tenor API密钥和返回的GIF数量
apikey = "MYKEY"  # 替换成你的真实API密钥
lmt = 8

# 首次访问时获取用户匿名ID(后续可以存在Cookie或数据库里重复使用)
anon_id_res = requests.get(f"https://api.tenor.com/v1/anonid?key={apikey}")
anon_id = anon_id_res.json()["anon_id"]

# 发起GIF搜索请求,这里以搜索"cat"为例,你可以替换成任意关键词
search_keyword = "cat"
search_api_url = f"https://api.tenor.com/v1/search?q={search_keyword}&key={apikey}&limit={lmt}&anon_id={anon_id}"
response = requests.get(search_api_url)
search_results = response.json()

2. 解析返回结果,提取GIF资源链接

Tenor API返回的JSON结构里,results数组包含了所有匹配的GIF条目。每个条目里的media字段存储了该GIF的不同格式版本(比如静态GIF、MP4、WebM),我们可以按需提取:

# 遍历所有搜索结果
for index, result in enumerate(search_results["results"]):
    # 提取标准GIF格式的资源链接(也可以换成"mp4"或"webm"字段获取对应格式)
    gif_resource_url = result["media"][0]["gif"]["url"]
    print(f"第{index+1}个GIF的链接: {gif_resource_url}")

3. 下载、显示或保存GIF

拿到链接后,我们可以直接下载并处理GIF:

方法一:用PIL保存/显示(仅显示第一帧)

如果只需要保存GIF或者看静态预览,PIL足够用:

# 下载GIF内容
gif_response = requests.get(gif_resource_url)
gif_content = io.BytesIO(gif_response.content)

# 显示GIF的第一帧
img = Image.open(gif_content)
img.show(title=f"Preview GIF {index+1}")

# 保存GIF到本地文件
with open(f"saved_gif_{index+1}.gif", "wb") as file:
    file.write(gif_response.content)

方法二:用imageio播放完整动图

如果需要播放完整的动态效果,推荐使用imageio库(需要先安装:pip install imageio):

# 读取动图的所有帧
gif_frames = imageio.mimread(gif_content)

# 保存动图(可选)
imageio.mimsave(f"animated_gif_{index+1}.gif", gif_frames)

# 播放动图
imageio.imshow(gif_frames)

关键知识点

  • Tenor API的media字段是一个数组,每个元素对应一种格式的资源,你可以根据场景选择:
    • gif:标准GIF格式,兼容性好但文件较大
    • mp4:MP4视频格式,文件小加载快,适合网页端
  • 匿名IDanon_id需要保存下来,后续用户再次访问时复用,这样Tenor能提供更个性化的推荐

内容的提问来源于stack exchange,提问作者Javier Jiménez de la Jara

火山引擎 最新活动