Princess APIについての説明
ミリシタ*1のAPIです。
以下、引用とサイトのリンクになります。
夢の世界へご招待なのです
ー プリンセス・アラモード
Public RESTful Application Programming Interface Series.
開発者向けの API を提供しています。
※ ミリシタの他にもデレステ*2やシャニマス*3のAPIの提供がありますが、今回はミリシタのみのAPIを扱います。
ライブラリの利用法について
PyPiにはまだ登録していません。
GitHub https://github.com/sekine-1113/princess-api-wrapper
利用する際は
pip install git+https://github.com/sekine-1113/princess-api-wrapper.git
上記コマンドを入力することで使えるようになるかと思います。
ある程度ドキュメントは書いたつもりなので、恐らく大丈夫かと思いますが。
以下のように使うことができます。
from princessAPI import ( API, Lang, IdolType, CardRarity, ExType, EventType, ) api = API() cards = api.get_cards(idolId=30, rarity=CardRarity.SSR, exType=ExType.SHS) print(cards[0]["name"]) event_id = "192" result = api.get_event_ranking_border_point(event_id) print(result.keys()) result = api.get_event_ranking_border_point(event_id, ETag="a3ac39e6fe30e22df7544cfd818edc02") # using ETag print(result.keys())
API
クラスの引数として
cache, host, lang, use_etag, retry_count, retry_delay, user_agent, timeout
があります。
引数名 | 実引数 |
---|---|
cache | cache クラスを継承したcacheを利用できます。デフォルトは StaticCache クラス(TTLCache ベース)です。 |
host | 基本変更する必要はありません。デフォルトは'api.matsurihi.me' です。 |
lang | 日本語以外を利用したい場合に使います。その場合consts.Lang クラスを使います。 |
use_etag | ETagを利用したい場合に使います。 デフォルトは False ですが、一部メソッドの引数にETagが設定された場合はこれに関わらずETagを利用することが可能です。 |
retry_count | エラー発生時に何回リトライするかを指定します。デフォルトは1 です。 |
retry_delay | エラー発生時に何秒待機するかを指定します。デフォルトは0 です。 |
user_agent | ユーザーエージェントを設定します。指定がない場合は、生成されます。 |
timeout | タイムアウトの秒数を指定します。デフォルトは60 です。 |
イベント関連の一部メソッドに引数ETag
がありますが、ETag
がある場合とない場合の挙動が少し変わります。
# ETagがない場合 dict_keys(['eventPoint', 'highScore', 'loungePoint', 'idolPoint']) # ETagがある場合 dict_keys(['ETag', 'response'])
ETag
がある場合はETag
にIf-None-Match
の値が、response
に従来のレスポンスが入ります。
get_idol
メソッドやget_card
メソッドなど一部レスポンスは配列になる場合があります。
設計する上で工夫した点
サーバに負荷をかけにくくするため、Cacheを用いました。
HTTPステータスコードによるエラーハンドリング。
拡張性の意識。
ソースコードのドキュメント化。
ライブラリ化
まとめ
だれも読まないだろうということをいいことに工夫した点すごく雑に書いてしまった // 後で修正する
もし使う際は、提供者や情報元の方々に迷惑が掛からぬよう、自己責任でお願いいたします。
気が向いたらミリシタ以外のAPIのラッパーも書きますたぶん。
今回はこのへんで。