Splatoon 2の記録をAPIを叩いて取得する

はじめに

スプラトゥーンを先日購入してからずっとやってます。

敵に全然わかばシューターが当たらなくてヽ(`Д´#)ノ ムキー!!なのでここんところサーモンランばっかりやってます。

するとグリルが倒せなくて詰む。あいつ硬すぎてチャージャーの単発じゃ全然倒せない。おまけに11月20日までの(竹とかの)チャージャーは飛距離なさすぎてバクダンに全然当たらない。

仕方なくわかばシュータで倒しています、どうもえむいーです。

スプラトゥーンはスマートフォンから記録が見れるのですが、何故かこれがPCや一般ブラウザ向けに公開されていないという不思議があります。

PC向けに一般公開されればにもっといろいろなウェブサービス展開できると思うのですが、サーバ負荷を考えてのことなのでしょうか?
特に今はネット対戦が無料で使える期間ですし…

どうやってPCで見るの?

具体的にはiksm_session(イカスミセッション?)の値がわかれば良いのです。

iksm_sessionの調べ方についてはネットに山のように情報があるので割愛します。

ここのページを見ればどうすればiksm_sessionの値が調べられるかとか、どうやったらPCから見れるかという情報が全部載っています。

どうやってデータを収集するの?

データ取得用のAPIが用意されているので、それを叩くだけで良い。

その他、いろいろなAPIがある。間違って叩くと意図しないアイテムを買っちゃったりするので注意。

  • https://app.splatoon2.nintendo.net/api/data/stages
  • https://app.splatoon2.nintendo.net/api/festivals/active
  • https://app.splatoon2.nintendo.net/api/schedules
  • https://app.splatoon2.nintendo.net/api/records
  • https://app.splatoon2.nintendo.net/api/timeline
  • https://app.splatoon2.nintendo.net/api/onlineshop/merchandises

調べてみたところ、少なくともこれらのAPIがあるようだ。

これらをPHPを使ってスクレイピングする。ネットにある情報はPythonばかりなので、同様の動きをするコードとして書き直した。

ただデータを引っ張ってくるだけなのでとても短い。

実行すると今までの記録だったり、そういうものが全てJSON形式で保存(表示)される。

Teraterm上で実行するとこんなふうに見える。ユニコードをアンエスケープするのが大切なので覚えておくこと。

あとはこれをDBに保存するなりすれば良い。問題はiksm_sessionの有効期限がどのくらいかということなのだが…

まさか有効期限が設定されているだけで同じ値を使いまわしていることはあるまい。