BattleField 1のStatsを得る

gametools.networkを利用する API JSON Excelとの連携

オンラインゲームのplayer stats(統計情報)を得るサイトは色々ありますが、一つの例として

を利用しています。

最終的には必要な情報だけを得て、Excelのファイルに追記することを試みます。どんなAPIかは上のサイトを開いてみましょう。タイトルにあるようにBattlefieldシリーズの情報を得ますが、”過去”のシリーズはともかく、現行シリーズは公式データを引っ張ってきます。今回はBattlefield 1の筆者のプレイヤーデータを得てみましょうかね。まずプレイヤー名を晒しますが、”docnao”です。少し下へ行って、

ここから上から7番目をクリックすると、

こうなるので、”Try it out”してみましょうか。時々用意されているSwagger I/Fですね。

こんな感じでパラメータを入れて、“Execute”です。

Code=200なので成功です。自分でCurlしたいときは、Curlのコマンドラインを使います。Copy & Pasteしましょうか?

curl -X 'GET' \
  'https://api.gametools.network/bf1/stats/?format_values=true&name=docnao&platform=pc&skip_battlelog=false&lang=en-us' \
  -H 'accept: application/json'

Windowsのコマンドプロンプトから実行するならば、継続行が上手く機能しないので、1行で書いた方が吉です。Bashから実行しますけど、後余分な指定(curlのdefaultはGETなので、-X ‘GET’は不要)を省いて、

$ curl -s https://api.gametools.network/bf1/stats/?name=docnao

jqにパイプしてから表示すると、

$ curl -s https://api.gametools.network/bf1/stats/?name=docnao | jq .
{
  "userId": 2250249294,
  "avatar": "https://eaassets-a.akamaihd.net/battlelog/defaultavatars/default-avatar-36.png",
  "userName": "docnao",
  "id": 233859035,
  "rank": 150,
  "rankImg": "https://eaassets-a.akamaihd.net/battlelog/battlebinary/gamedata/Tunguska/103/47/Rank16-99d1708e.png",
  "rankName": "Rank 150",
  "skill": 113.97,
  "scorePerMinute": 690.62,
  "killsPerMinute": 0.26,
  "winPercent": "31.82%",
  "bestClass": "Medic",
  "accuracy": "8.85%",
  "headshots": "8.58%",
  "timePlayed": "71 days, 20:55:39",
  "secondsPlayed": 6209739,
  "killDeath": 2.77,
  "infantryKillDeath": 2.28,
  "infantryKillsPerMinute": 0.22,
  "kills": 27140,
  "deaths": 9815,
  "wins": 1387,
  "loses": 2972,
  "longestHeadShot": 323.19,
  "revives": 8031.0,
  "dogtagsTaken": 54,
  "highestKillStreak": 28,
  "roundsPlayed": 4359,
  "awardScore": 23661500.0,
  "bonusScore": 3773410.0,
  "squadScore": 7678000.0,
  "currentRankProgress": 50000000.0,
  "totalRankProgress": 50000000.0,
  "avengerKills": 3098,
  "saviorKills": 3362,
  "headShots": 2328,
  "heals": 97087.0,
  "repairs": 2535.0,
  "killAssists": 2220.0
}

基本的な統計情報は得られていますよね。ここから必要な情報のみを抜き出せばよいわけです。他方各武器でのKill数とかの情報は、一個下のところです。

ここでExecuteします。

curl -X 'GET' \
  'https://api.gametools.network/bf1/weapons/?format_values=true&name=docnao&platform=pc&skip_battlelog=false&lang=en-us' \
  -H 'accept: application/json'

いわゆるエンドポイントが若干違うだけですね。結果はあまりにも長いので、途中を省略して、

{
  "userId": 2250249294,
  "avatar": "https://eaassets-a.akamaihd.net/battlelog/defaultavatars/default-avatar-36.png",
  "userName": "docnao",
  "id": 233859035,
  "weapons": [
    {
      "weaponName": "Wex",
      "type": "Field kit",
      "image": "https://eaassets-a.akamaihd.net/battlelog/battlebinary/gamedata/tunguska/19/14/WEXFlammenwerfer-13f2b3af.png",
      "timeEquipped": 782,
      "kills": 5,
      "killsPerMinute": 0.38,
      "headshotKills": 0,
      "headshots": "0.0%",
      "shotsFired": 543,
      "shotsHit": 45,
      "accuracy": "8.3%",
      "hitVKills": 9
    },
    {
      "weaponName": "MG 08/15",
      "type": "Field kit",
      "image": "https://eaassets-a.akamaihd.net/battlelog/battlebinary/gamedata/tunguska/8/121/Maxim0815-0879ffaa.png",
      "timeEquipped": 6895,
      "kills": 33,
      "killsPerMinute": 0.29,
      "headshotKills": 8,
      "headshots": "24.24%",
      "shotsFired": 6062,
      "shotsHit": 233,
      "accuracy": "3.8%",
      "hitVKills": 7.06
    },
	以下略
}

必要なweaponNameと対応するkillsだけ拾えばいいですかね。ちなみにWexというのは恐ろしい火炎放射器です。(凄く怖い、笑)あー、短縮版は、

$ curl -s https://api.gametools.network/bf1/stats/?name=docnao | jq .

C++ Builder CEのアプリではこの二つのAPIを使いますが、それは以降の記事で。

コメント