Skip to content

Latest commit

 

History

History
128 lines (81 loc) · 7.78 KB

api_ja.md

File metadata and controls

128 lines (81 loc) · 7.78 KB

この日本語ドキュメントは翻訳されたものであり、不正確な場合があります。必要に応じて英語版の原文を参照してください

Enka.Network - API

各ゲームのAPIドキュメント

はじめに

他の人が作ったラッパーを利用してもいいし、APIを直接使っても良いと思います。 非常にシンプルなので、レスポンスをもとに独自のデータロジックを作成するのは全く難しくありません。

最大の課題は、データマイニングされたゲームデータをナビゲートし、適切な方法で返されたデータを使用することです。

様々な言語のラッパーについては、Wrappersを参照してください。

利用する前に

APIを使用する際のいくつかのルールです。

  1. UIDを列挙したり、データベースを埋めるために大量のリクエストを実行しようとしないでください。 UIDは何億もあり、このAPIでこれを実行することはできません。後日、バッチデータを提供することがあります。

  2. リクエストにはカスタムしたUser-Agent ヘッダを設定してください。 そうすることで、リクエストの追跡が簡単になり、必要に応じてあなたを助けることもできます。

  3. UIDのエンドポイントには動的な速度制限があります。 あまりに速く再リクエストすると、応答時間が遅くなり、最終的にはステータスコード429が返されます。 この場合、速度を落とすか、私に連絡してレートリミットを増やすことが可能かどうかを確認する必要があります。 殆どの場合、これは必要ではなく、最適化されていないコードが原因です。

  4. 全てのUIDリクエストにはttlというフィールドを返します。 このフィールドは「リクエストされたUIDに対して次のデータ更新が行われるまでの秒数」です。 値が0になるまでエンドポイントはキャッシュされたデータを返しますが、その間であってもリクエストするとレートリミットを消費してしまいます。 リクエスト時にttlのタイムアウトを設けてデータをキャッシュするか、ttlが切れるまでそのUIDへのリクエストを行わないようにすることを試してみてください。 この処理にはRedisなどを用いることをお勧めします。

もしデータの扱いに困ったら、Discordサーバーでヘルプを受けられます。

API一覧

UIDエンドポイント

キャラ情報を含む全ての情報を取得

https://enka.network/api/uid/618285856/

レスポンスには playerInfoavatarInfoList が含まれます。 playerInfoはゲームアカウントに関する基本的なデータです。 もし avatarInfoList が見つからない場合は、当該UIDのアカウントはプロフィールが非公開にされているか、キャラクターが設定されていないことを意味します。

プレイヤー情報のみを取得

https://enka.network/api/uid/618285856/?info

リクエストに ?info を付けることで、playerInfo のみをリクエストすることができます。 もし playerInfo だけが必要であれば、このエンドポイントを使用してください。 全てのデータを取得するよりもずっと速く取得する事が出来ます。

さらに、以下の条件を満たす場合、両方のレスポンスに owner オブジェクトが含まれます。

  1. ユーザがこのサイトにアカウントを持っている。
  2. ユーザーが自分のUIDをプロファイルに追加した。
  3. ユーザーが認証を行った。
  4. ユーザーがその公開状態を"公開"に設定した。

owner オブジェクトに関する詳細は以下を参照ください。

HTTPレスポンスコード

アプリ内でこれらが適切に処理されるようにしてください。

400 = UIDの形式不正 (入力された値が範囲外であるなど)
404 = そのUIDを持つプレイヤーが存在しない (これはmiHoYoサーバーからのレスポンスです)
424 = ゲームメンテナンス (更新等) / ゲームアップデート後にシステムが大幅に変更されて更新が必要
429 = レートリミット (Enka.NetWorkかmiHoYoサーバーのどちらか)
500 = Enka.NetWorkサーバーのエラー
503 = Enka.NetWorkサーバーの一時停止中

プロファイルエンドポイント

ウェブサイト上でアカウント(プロファイル)を作成し、そのアカウントに複数のゲームアカウントを設定することが可能です。 ユーザーは、認証ページに記載された認証コードによって、そのアカウントが自分のものであることを証明する必要があります。

ユーザーは、好きな名称でビルドを「スナップショット」することができ、「保存されたビルド」と呼ばれています。

https://enka.network/api/profile/Algoinde/

ユーザー情報を取得します。

https://enka.network/api/profile/Algoinde/hoyos/

「hoyos」- ゲームアカウントとそのメタデータのリストを取得します。 これは 認証状態 且つ 公開状態 であるアカウントのみを返します(ユーザーはアカウントを隠すことができます。認証されていないアカウントはデフォルトで隠されます)。 レスポンスの各キーはmihoyoの一意な識別子であり、この識別子を使って後続のリクエストで実際にキャラクター/ビルドの情報を取得する必要があります。

https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/

1つのゲームアカウントのメタデータを返します。

https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/builds/

指定されたゲームアカウントの保存されたビルドを返します。これはオブジェクトの配列で、キーはキャラクターの avatarId です。 オブジェクトの配列は与えられたキャラクターの異なるビルドを順不同で表します(ただし、表示の為に順序が記載された order フィールドを持ちます)。

ビルドに live: true フィールドがある場合、それは「保存」されたビルドではなく、単に「更新」をクリックした時に取得されたものであることを意味します。 更新すると、古いliveビルドはすべて削除され、新しいビルドが作成されます。この更新をいつ行うかは、ユーザーだけが決めることができます。

UIDエンドポイントで説明したように、UIDリクエストを行うと、ownerオブジェクトを取得することができます。 このオブジェクトのフィールドを使用して、URLを作成することができます。

https://enka.network/api/profile/{owner.username}/hoyos/{owner.hash}/builds/

Wrappers

TS/JS - https://www.npmjs.com/package/enkanetwork.js - Jelosus1

TS/JS - https://github.com/yuko1101/enka-network-api - yuko1101

Rust - https://github.com/eratou/enkanetwork-rs - eratou

Python - https://github.com/mrwan200/enkanetwork.py - mrwan200

Python - https://github.com/seriaati/enka-py - seriaati

Java - https://github.com/kazuryyx/EnkaNetworkAPI - kazury