はじめに
この記事ではPythonのライブラリであるApexTrackerPyを使用したPythonでのApexlegendsの戦歴の取得方法などを解説します。
目次
- APIの登録
- APIの種類について
- 登録
- 実際に戦歴を取得してみる
- APIの呼び出し方
- 値を取り出してみる
- おまけ:現在のマップを取得してみる
APIの登録
APIの種類について
ApexTrackerPyではUNOFFICIAL APEX LEGENDS APIとTRACKER NETWORK APIの2種類に対応しています。
UNOFFICIAL APEX LEGENDS APIは戦歴以外にもサーバーステータスやマップローテーションなど多くの情報が取得できます。
戦歴(プレイヤーステータス)の取得はどちらでもいいのですが、この記事ではUNOFFICIAL APEX LEGENDS APIを使ってみます。
登録
このページにアクセスすると上の方にこのようなフォームがあると思います。
上からProject URL (not required) 使用するサイト等へのURL(必須ではない)、(Very) short usage description(簡単な使いみちの説明)とあるので入力し送信ボタンをクリックします。
最後にAPIキーが発行されるのでそれを安全な場所に保管して登録は完了です。
実際に戦歴を取得してみる
ライブラリのインストール
pip3 install ApexTrackerPy
pipで一発で入ります
APIの呼び出し方
import ApexTrackerPy
res = ApexTrackerPy.GetApexPlayerStatus(APIキー, 機種, ユーザー名)
返り値にはapexclassという独自のクラスとして値が返却されます。
機種は
- PC
- PSN
- XBOX
- SWITCH
に対応しています。
ユーザー名は各機種のID(OriginならID、PS4ならPSNID)
Steam版は紐付けたOriginユーザー名でOKです。
スイッチ版はAPIの制約でUID指定のみの対応です。
ApexLegendsStatusのClub等からUIDを見つけてきてユーザー名にUID、4つ目の引数をTrueにしてください。
値を取り出してみる
print("ユーザー名: "+res.name)
print("プレイヤーレベル: "+res.level)
print("バトロワランクの現在のランク: "+res.CurrentRank)
print("合計キル数: "+res.total_kill)
print("選択中のレジェンド: "+res.legends_json["selected"]["Legendname"])
print("レイスの一番上のトラッカーの値(自分はキル数): "+res.legends_json['all']['Wraith']['data'][0]['value'])
詳しい戻り値についてはGithub Wikiを参照してください。
legends_json
からレジェンドの詳細情報を取り出すことができます。
全部の関数で共通なのがrow_json
でAPIから取得したJSONを直で出力することができます。あとelapsed_time
でAPIの呼び出しにかかった時間を取得できます。
おまけ:現在のマップを取得してみる
現在のバトロワ(カジュアルの)マップを取得してみる例
import ApexTrackerPy
res = GetApexMapRotation(api_key)
print("現在のマップ: " + res.BattleRoyal_Current_Map)
標準ではマップ名の出力は英語ですが、取得する前に
ApexTracerPy.LANG = "ja-JP"
これを入れてあげると日本語化できます(v1.8からの新機能)
# 標準(en-US)
現在のマップ: Storm Point
# 日本語化後(ja-JP)
現在のマップ: ストームポイント
終わり
他にも取得できる情報が沢山あるのでWikiも覗いて見てください!
legends_jsonのところは各レジェンドごとに変数を用意してあげるとかRespawnAPIから直接取得していなぁなんて思ったりしています。