自分専用の「Apex Legends」トラッカーサイトを作ろう(後編)

2020-03-28

はじめに

プログラミングが全然理解できていない、ど素人が書いたコードです。
一応、意図通りに動いているので公開しますが不具合等ありましたら、すみません。

データを比較する

この記事では、前編でAPIから取得したデータと中編でスプレッドシートに書き込んでおいた少し前のデータを比較し、今日のキル数などを算出していきます。
長かった解説も今回で最後です。もう少しだけお付き合いください。

事前準備

前回、スプレッドシートへ自動でAPIから取得したデータを保存することができたので、そのデータを昨日までのデータとして参照してみます。

今回はJSONとして利用するので、中編で作成したスプレッドシートをメニューのファイルからwebに公開しておいてください。

JSONに変換する

何も難しいことはありません、スプレッドシートのIDをこちらのURLに組み込むだけです。

https://spreadsheets.google.com/feeds/list/スプレッドシートのID/od6/public/values?alt=json

スプレッドシートIDの後ろの「od6」はワークシートの順番になります。
2番目以降のワークシートを使いたい場合は、人によって変わったりもするので各自調べてみてください。

そのURLにアクセスすると、無事データがJSON化されていますがごちゃごちゃと見づらくわけがわからないと思うので、Chromeで拡張機能のJSON Viewerや整形してくれるサイトを利用して、ほしいデータがどう格納されているか確認してください。

私の場合だと、このようになっています。

PHPでシートを参照するコード

JSONがどう書かれているかもわかったので、PHPに組み込んでいきます。

このpostsからほしい情報、例としてキル数を抜き出してみます。
キル数は feed > entry > gsx$kills > t にあるのでこんな感じに指定してあげます。

私の場合は昨日までのトータルキルって意味で $ytk という名前で管理しています。
あとは同じようにダメージと勝利数、同じデータ名の中でも最初のという意味で $i=0; も追加してあげます。

現在の値から昨日の値の差分を算出

前編でAPIから取得した値からスプレッドシートから取得した値を引くことで、今日の差分の値が算出できます。

そのままです。- (マイナス)してあげるだけです。

コードをまとめる

前編のAPIからデータを取得するコードと、今回のスプレッドシートからデータを取得、差分を算出するコードをまとめるとこのようになります。

処理部分はこれにて全て完成です。

サイトとして公開してみる

処理部分は全て終わっているので、あとはhtmlとして出力してあげればサイトとして完成します。
簡単ですが、このようにしてみました。

オーバーレイとして使うには

配信時のオーバーレイとして使うには、リアルタイムで数値が変化していくように定期的にリロードさせてあげることが必要です。
方法はいろいろありますが、今回はjavascriptでリロードするようにしてみます。

APIの負荷も考えて3分毎リロードするようにしてあります。

OBSなどのブラウザ機能で読み込んだあとは、cssでスタイルを整えたりマスクで要らないところを隠したりして使ってみてください。

完成サンプル

実際にオーバーレイさせてみると、こんな感じになります。

ごあいさつ

簡潔とはほど遠い長い解説になってしまいましたが、お付き合いありがとうございました。

某トラッカーサイトに配信用のウィジェットがあったのですが、レジェンドに紐づいてて、選んだレジェンドによっては不安定になるので今回これを作ってみました。
先人達のいろんな解説サイトからアイデアやコードをもらってきたので、統一性がなかったり知識不足で変な箇所もあるかと思いますが、参考にしてみてください。

朧月夜:Stream Live Now !
朧月夜:Currently Offline