无法从 IGDB API 获取封面 URL

问题描述 投票:0回答:1

我刚刚开始使用 IGDB API,我正在尝试使用 Python 中的请求获取搜索结果所需的所有数据。我的搜索功能运行良好,但 API 只返回搜索结果某些元素的 ID 值,而不返回实际数据,例如图像封面、流派或平台。

现在我正在尝试从 API 中提取图像封面 URL,但当我尝试封面端点时,它似乎只是返回相同的随机图像,而不是我正在寻找的游戏的一个或多个图像。我不确定是否需要以某种方式指定图像 id,但我也尝试过并得到了相同的结果。

import json
import requests

token = get_token()

client_id = "my id"

headers = {"Client-ID":client_id, "Authorization":"Bearer " + token['access_token']}

game_id = "84920"
params = {"fields":"url", "id":game_id}
response = requests.get("https://api.igdb.com/v4/covers", params=params, headers=headers)

image = json.loads(response.content.decode('utf-8'))

还尝试过:

image_id = "134616"
params = {"fields":"url", "image_id":image_id}
response = requests.get("https://api.igdb.com/v4/covers", params=params, headers=headers)

image = json.loads(response.content.decode('utf-8'))

结果:看似随机的图像网址列表,而不是我正在寻找的游戏的图像。

python python-requests twitch
1个回答
0
投票

IGDB 的 API 使用类似 SQL 的查询,在请求的

body
部分中以字符串形式编写。

您正在尝试将请求作为参数,并发出 GET 请求,而不是 POST 请求

所以以下应该可以解决问题

import json
import requests

token = get_token()

client_id = "my id"

headers = {"Client-ID":client_id, "Authorization":"Bearer " + token['access_token']}

game_id = "84920"

response = requests.post("https://api.igdb.com/v4/games", headers=headers, data='fields cover.image_id; id='+game_id+';')

image = json.loads(response.content.decode('utf-8'))

注意:我正在选择

/games
端点,并使用扩展器来
join
另一个表。由于封面端点,封面的
id
不是游戏 ID,因此您的原始请求无论如何都不会获取正确的封面。

您还可能需要获取

image_id
并构建一个 URL,因为封面中返回的
url
对于大多数用例来说通常没有用处。

所以将

image_id
放入
https://images.igdb.com/igdb/image/upload/t_{size}/{image_id}.jpg

我通常更喜欢/使用

cover_big
作为尺寸

© www.soinside.com 2019 - 2024. All rights reserved.