【问题标题】:IGDB gather correct game data from correct consoleIGDB 从正确的控制台收集正确的游戏数据
【发布时间】:2020-05-21 03:06:23
【问题描述】:

大家好,我正试图弄清楚这个IGDB api。我确信它很强大,但似乎很难知道需要调用什么以及如何调用,因为他们的文档中没有很好的示例。

举个例子,我希望从游戏“真人快打”中获取盒子艺术和游戏信息,并且我需要从 SNES 版本中获取它。

在他们的网站上进行正常搜索会带来很多不同的真人快打。

我需要的 SNES 真人快打是图片中倒数第二个。真人快打 (1992)。

所以我首先有代码来获取 id、封面、流派、名称、平台和屏幕截图:

public partial class Gameinfo
{
    [JsonProperty("id")]
    public long Id { get; set; }

    [JsonProperty("cover")]
    public long Cover { get; set; }

    [JsonProperty("genres")]
    public long[] Genres { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("platforms")]
    public long[] Platforms { get; set; }

    [JsonProperty("screenshots")]
    public long[] Screenshots { get; set; }
}

using (var client = new HttpClient()) {
   using (var httpClient = new HttpClient { BaseAddress = baseAddress }) {
       httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json");
       httpClient.DefaultRequestHeaders.TryAddWithoutValidation("user-key", "##########################");

       using (
           var response = await httpClient.GetAsync("games?search=" + HttpUtility.UrlEncode(game) + "&fields=*")
       )
       {
           string responseData = await response.Content.ReadAsStringAsync();
           gameData = JsonConvert.DeserializeObject<List<Gameinfo>>(responseData);
           System.Diagnostics.Debug.WriteLine(gameData);
       }
    }
}

上面的JSON响应是:

你可以看到第一个命中是 Mortal Kombat II,第二个是我正在寻找的那个,原始的 Mortal Kombat。因此,从上面的代码中,我得到了搜索“更深”所需的 2 个主要内容。游戏 ID平台 ID。但是这么说 - 碱液是问题所在。我无法仅搜索 Mortal Kombat 并自动获得正确的 1992 版本。

所以在不知道游戏发布日期的情况下,如何使用所需的 SNES 平台搜索正确的游戏?

更新 1

所以我尝试了以下操作:

using (
    var response = await httpClient.GetAsync("games/?search=" + 
                   HttpUtility.UrlEncode("mortal kombat") + 
                   "&fields=name,platforms.name&where platforms.id = 19")

但无论如何,我总是得到相同的数据:

[
  {
    "id": 81899,
    "name": "Mortal Kombat \u0026 Mortal Kombat II",
    "platforms": [
      {
        "id": 22,
        "name": "Game Boy Color"
      }
    ]
  },
  {
    "id": 119,
    "name": "Mortal Kombat",
    "platforms": [
      {
        "id": 6,
        "name": "PC (Microsoft Windows)"
      },
      {
        "id": 9,
        "name": "PlayStation 3"
      },
      {

【问题讨论】:

    标签: c# api rest class json.net


    【解决方案1】:

    您好,我曾研究过 IGDB Api。我认为您需要获得具有特定平台的游戏。

    所有你需要的地方只有平台过滤器。以下查询获取平台 id 为 130 的所有游戏(我不知道是哪个平台。您可以更改 SNES 平台 id)。

        search "Mortal Kombat";
        f name,popularity,rating,cover.image_id,platforms;
        s popularity desc;
        w platforms = (130) & category = 0;
        l 50;
        o 100;
    

    【讨论】:

    • 我不知道您可以使用“f”表示字段,“s”表示搜索,“w”表示位置,“L”表示限制,“o”表示顺序。类别是什么?
    • 我尝试使用您的建议,但由于某种原因它似乎对我不起作用...
    • 's' 表示排序,'o' 表示偏移量
    • 那么如果游戏中没有搜索选项,你如何搜索呢?
    • 您只需添加搜索“游戏名称”;对于上述查询。我编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多