FortniteAPIを使って対戦履歴を取得する

fortnite-Victory Royale

Fortniteおもしろいですよね。
筆者もハマっています。
下手ですが。


自分の対戦履歴(プレイ時間やキル数、など)などを知りたいなと思い、調べてみると「Fortnite Tracker」というサイトで調べることができます。


こういうサイト作ってみたいなと思い、もうちょっと調べてみるとAPIが準備されているみたいですね。
でも、このAPIのいい感じの日本語ドキュメントが見つからず。。。


という訳で、自分なりにAPIの処理結果を解析してみたので、その結果を紹介していきます


環境情報


使用するAPIは、Rakuten Rapid APIで公開されているAPIを使用します。
Epic(Fortniteの運営会社)が公開しているAPIをラップしている形ですかね。
使いやすいです。


今回は、上記のAPIをPHPから呼び出して、処理結果をWEBページに表示する形にします。


  • 言語:PHP5.5.35
  • API:Rakuten Rapid API/Fortnite-API

Rakuten Rapid API は従量課金制ですが、お試しで使う分には課金されるまではトラフィックは使わないと思います。


ステータス取得のAPI実行


APIの実行サンプルを紹介します。


今回はcurlを使ってAPIを実行しています。
キー情報(x-rapidapi-key)は、Rakuten Rapid APIで取得したキー情報を使用します。


Fortnite APIは、「Status」「Others」「PVE」の3つがありますが、戦歴を取得できるのは「Status」のようです。
「Status」APIをcurlで実行して、取得した結果をJSONデコードします。


$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://fortnite-api.p.rapidapi.com/stats/" . $_POST['__nickname'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "x-rapidapi-host: fortnite-api.p.rapidapi.com",
        "x-rapidapi-key: '※APIのキー"
    ),
));
$response = curl_exec($curl);

// 実行失敗時はエラー表示
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} 

// JSONの処理結果をデコード
$resDecode = json_decode($response, true);

ソロ結果


ソロ結果を表示するWEB画面を作りました。

ニックネームを入力して「表示する」ボタンを押下すると、ニックネームユーザの戦歴が画面上に表示されます。


以下に、API実行結果の解析方法を紹介していきます。


ソロ結果の画面表示


「Fortnite Tracker」のソロ結果表示画面は以下になります。
吹き出しでコメントを入れている数値が、APIで取得できているはず、という事です。


FortniteAPIの実行結果

ソロ結果のAPI取得


FortniteAPIの実行結果に対する日本語マニュアルがみつからず、筆者が独自で解析した結果をまとめます。


まず、ソロ結果は”defaultsolo”キーに格納されているようです。

ソロ結果の格納場所
ソロ結果の各値

  • マッチ数

‘matchNum’キーの値。


  • 勝利数(ビクロイ)

‘winrate’キーの値。


  • キル数

‘kills’キーの値。


  • 勝率(ビクロイ率)

‘winrate’キーの値。


  • 1日あたりのキル数

‘kills’キーの値 / ’matchNum’キーの値。


  • TOP10の入賞数

‘placetop10’キーの値。


  • TOP25の入賞数

‘placetop25’キーの値。


  • 総プレイ時間

‘minutesplayed’キーの値。
値は分なので、日と時間にするには計算が必要。


  • 1マッチの平均時間

‘minutesplayed’キーの値 / ’matchNum’キーの値


  • 1マッチの平均キル数

‘kills’キーの値 /’matchNum’キーの値


  • 1分あたりのの平均キル数

‘kills’キーの値 /’mminutesplayed’キーの値


  • 1マッチの平均スコア数

‘score’キーの値 /’matchNum’キーの値


  • 1分あたりのの平均スコア数

‘score’キーの値 /’minutesplayed’キーの値


  • 総スコア数

‘score’キーの値。



sakusaku

都内でSIerをやっています。 使用している技術は、Java、PHP、MySQL、PostgreSQL、Oracle、Apache、Tomcat、あたりです。 Pythonやってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください