从 Steam Api 和 IGDB 同步数据
Synchronize data from Steam Api and IGDB
我创建了一个从 IGDB API (https://api-docs.igdb.com/) 获取数据的应用程序来显示游戏信息。
我想允许用户导入他们的 Steam 游戏库。
我使用 Steam 端点 GetOwnedGames (http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=xxxx&steamid=user_steam_id&format=json&include_appinfo=1&include_played_free_games=1) 发回数据,例如
{
"response": {
"game_count": 1,
"games": [
{
"appid": 6020,
"name": "STAR WARS™ Jedi Knight: Jedi Academy™",
"playtime_forever": 0,
"img_icon_url": "2e359a8df71ea18ddd77fda3f6b307e6e86ef910",
"img_logo_url": "027e513fe7e7681203587f7926828fb188af54ed",
"playtime_windows_forever": 0,
"playtime_mac_forever": 0,
"playtime_linux_forever": 0
},
]
}
}
但是我在链接 Steam 数据和 IGDB 数据时遇到了问题。
我认为我无法按名称搜索 IGDB,因为例如,如果我搜索“STAR WARS™ Jedi Knight: Jedi Academy™”
POST https://api.igdb.com/v4/games
BODY
fields *, platforms.*, platforms.websites.*;
where name ~ *"STAR WARS™ Jedi Knight: Jedi Academy™"* & platforms != null;
limit 50; sort first_release_date desc;
IGDB 没有找到任何东西,因为它知道这个游戏是“星球大战:绝地武士 - 绝地学院”。 (去除特殊字符也不起作用)
您将如何链接这两个 API?
没有简单的方法。您必须执行几个步骤才能在服务之间匹配游戏。您需要使用 Steam 应用 ID。
您无法从 Steam 开始,因为 Steam 没有关于 IGDB 的任何信息。你必须从 IGDB 开始。
IGDB 提供 website
端点:
field type description
category Category Enum The service this website links to
...
url String The website address (URL) of the item
Website Enums
category
name value
official 1
...
steam 13
现在您拥有了 Steam URL,它在其 URL 中包含唯一的 Steam 应用程序 ID:https://store.steampowered.com/app/6020
。这可能已经足够匹配游戏了。
使用 Steam Web API 端点 GetAppList
您可以将 Steam 应用 ID 与游戏名称相匹配。
我创建了一个从 IGDB API (https://api-docs.igdb.com/) 获取数据的应用程序来显示游戏信息。
我想允许用户导入他们的 Steam 游戏库。
我使用 Steam 端点 GetOwnedGames (http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=xxxx&steamid=user_steam_id&format=json&include_appinfo=1&include_played_free_games=1) 发回数据,例如
{
"response": {
"game_count": 1,
"games": [
{
"appid": 6020,
"name": "STAR WARS™ Jedi Knight: Jedi Academy™",
"playtime_forever": 0,
"img_icon_url": "2e359a8df71ea18ddd77fda3f6b307e6e86ef910",
"img_logo_url": "027e513fe7e7681203587f7926828fb188af54ed",
"playtime_windows_forever": 0,
"playtime_mac_forever": 0,
"playtime_linux_forever": 0
},
]
}
}
但是我在链接 Steam 数据和 IGDB 数据时遇到了问题。
我认为我无法按名称搜索 IGDB,因为例如,如果我搜索“STAR WARS™ Jedi Knight: Jedi Academy™”
POST https://api.igdb.com/v4/games
BODY
fields *, platforms.*, platforms.websites.*;
where name ~ *"STAR WARS™ Jedi Knight: Jedi Academy™"* & platforms != null;
limit 50; sort first_release_date desc;
IGDB 没有找到任何东西,因为它知道这个游戏是“星球大战:绝地武士 - 绝地学院”。 (去除特殊字符也不起作用)
您将如何链接这两个 API?
没有简单的方法。您必须执行几个步骤才能在服务之间匹配游戏。您需要使用 Steam 应用 ID。
您无法从 Steam 开始,因为 Steam 没有关于 IGDB 的任何信息。你必须从 IGDB 开始。
IGDB 提供 website
端点:
field type description
category Category Enum The service this website links to
...
url String The website address (URL) of the item
Website Enums
category
name value
official 1
...
steam 13
现在您拥有了 Steam URL,它在其 URL 中包含唯一的 Steam 应用程序 ID:https://store.steampowered.com/app/6020
。这可能已经足够匹配游戏了。
使用 Steam Web API 端点 GetAppList
您可以将 Steam 应用 ID 与游戏名称相匹配。