まいにち右往左往

日記です。興味の範囲がバラバラで統一性がない日記です。だんだん備忘録っぽくなってきました。

イカリング2の情報収集準備2

iksm_sessionのほうはいったんおいておきまして、早々に情報収集へと切り替えていきます。

 

halwind.hatenablog.com

 

もう3か月も前になりますが、iksm_sessionがわかっていればPythonに戦績データをjson形式でダウンロードさせられるようになりました。ただこのままだと一戦ごとにバラバラのファイルになってしまいます。

 本当はデータベース作ってその中に追記していくのがいいのかもしれません。ですが、まとめたデータを目で見てみたい気もします。そんな訳で、とりあえずはGoogleスプレッドシートに集めたデータを追記していくという方針にしました。

 

基本的なやり方はこちらを参照。

qiita.com

 

ここまでは、サンプルどおりに躓かずにやってこれました。取得した戦績の各要素を地道に書き込んでいけば結果は得られそうです。どうせ頑張るのは自分でなくてパソコンですし。

が、ここでGoogleAPIの制限が問題になってしまいました。

 

Usage Limits  |  Sheets API  |  Google Developers

 

リンク先を確認すると、100秒間に100リクエストまでとのことです。
ガチバトルに関係する要素は、単純にユーザーごとのキル数、デス数、ブキ種類だけでも3要素×8プレーヤーで24リクエストにもなってしまいます。きちんと多くの要素を登録するには、1戦ごとのデータはまとめて書き込んでしまいたいところです。

 

参考にしたサンプルではgspreadというパッケージを利用していましたので、情報を求めてリファレンスを確認してみます。

gspread — gspread 3.1.0 documentation

 

cell_list = worksheet.range('A1:C7')

for cell in cell_list:
    cell.value = 'O_o'

# Update in batch
worksheet.update_cells(cell_list)

 

 このままCell.valueに値を入れると、rangeで指定した範囲にたしかにデータが入りますし、APIの使用状況をみても回数は1回とカウントされていそうです。なんですが、範囲内のセルが全部同じ値になってしまうんですよね。配列つくってそれを入力とかできればいいのですが。そもそもサンプルの'O_o'ってなんでしょう……hogeとかfugaみたいな?

 

いまいちわからなかったので、次はGoogleスプレッドシートAPIリファレンスを確認です。

 

Basic Writing  |  Sheets API  |  Google Developers

 

読んでみると異なる値を配列に入れて、一括で更新できそうです。
結局gspreadは使わなそうかな。

 

{
  "range": "Sheet1!A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "3/20/2016"],
  ],
}

 

このvaluesの部分に、jsonから抜き出してきた結果をいれてあげればよさそうです。めどが立ちましたので、いったん入れ物となるスプレッドシートを作成しました。jsonに含まれているデータで、記録するものは次のとおりとします。

 

まずは全体的な項目として、ガチマッチのルール、ガチパワー、ステージ、勝敗、チームごとの進めたカウント、かかった時間。
これに各プレーヤーごとにウデマエ、ブキ、サブ、スペシャルの種類、スペシャル使用回数、キル数、アシスト数、デス数、塗ポイントを付け加えます。

プレーヤーごとのIDも面白そうなので追加し、ユニークなキーになってるっぽいbattle_numberで管理することにしました。

あとは頑張ってコードを書いていくだけです。