イカリング2の情報収集準備2
iksm_sessionのほうはいったんおいておきまして、早々に情報収集へと切り替えていきます。
もう3か月も前になりますが、iksm_sessionがわかっていればPythonに戦績データをjson形式でダウンロードさせられるようになりました。ただこのままだと一戦ごとにバラバラのファイルになってしまいます。
本当はデータベース作ってその中に追記していくのがいいのかもしれません。ですが、まとめたデータを目で見てみたい気もします。そんな訳で、とりあえずはGoogleスプレッドシートに集めたデータを追記していくという方針にしました。
基本的なやり方はこちらを参照。
ここまでは、サンプルどおりに躓かずにやってこれました。取得した戦績の各要素を地道に書き込んでいけば結果は得られそうです。どうせ頑張るのは自分でなくてパソコンですし。
が、ここでGoogleのAPIの制限が問題になってしまいました。
Usage Limits | Sheets API | Google Developers
リンク先を確認すると、100秒間に100リクエストまでとのことです。
ガチバトルに関係する要素は、単純にユーザーごとのキル数、デス数、ブキ種類だけでも3要素×8プレーヤーで24リクエストにもなってしまいます。きちんと多くの要素を登録するには、1戦ごとのデータはまとめて書き込んでしまいたいところです。
参考にしたサンプルではgspreadというパッケージを利用していましたので、情報を求めてリファレンスを確認してみます。
gspread — gspread 3.1.0 documentation
このままCell.valueに値を入れると、rangeで指定した範囲にたしかにデータが入りますし、APIの使用状況をみても回数は1回とカウントされていそうです。なんですが、範囲内のセルが全部同じ値になってしまうんですよね。配列つくってそれを入力とかできればいいのですが。そもそもサンプルの'O_o'ってなんでしょう……hogeとかfugaみたいな?
いまいちわからなかったので、次はGoogleのスプレッドシートのAPIリファレンスを確認です。
Basic Writing | Sheets API | Google Developers
読んでみると異なる値を配列に入れて、一括で更新できそうです。
結局gspreadは使わなそうかな。
このvaluesの部分に、jsonから抜き出してきた結果をいれてあげればよさそうです。めどが立ちましたので、いったん入れ物となるスプレッドシートを作成しました。jsonに含まれているデータで、記録するものは次のとおりとします。
まずは全体的な項目として、ガチマッチのルール、ガチパワー、ステージ、勝敗、チームごとの進めたカウント、かかった時間。
これに各プレーヤーごとにウデマエ、ブキ、サブ、スペシャルの種類、スペシャル使用回数、キル数、アシスト数、デス数、塗ポイントを付け加えます。
プレーヤーごとのIDも面白そうなので追加し、ユニークなキーになってるっぽいbattle_numberで管理することにしました。
あとは頑張ってコードを書いていくだけです。