chunirec API ドキュメント (v1.0)
概要
chunirec API の仕様についてまとめたドキュメントです。
chunirec API について
chunirec のデーターにアクセスするためのAPIです。スコアとチュウニズムに収録されている楽曲の情報が取得できます。
利用上の注意
chunirec API(以下「本API」といいます)を利用するにあたっての注意事項です。
1. 予告なく本APIの提供を停止する場合があります。
2. 本APIを利用して生じた損失及び障害等には、一切の責任を負いません。
リクエスト
ホストは
api.chunirec.net
です。通信にはすべてHTTPSを使用します。
アクセストークン
すべてのAPI呼び出しに、アクセストークンをGETメソッドの場合はパラメーター、それ以外はリクエストボディに含める必要があります。
アクセストークンは、アカウント設定>開発者>API アクセストークン発行 で発行できます。
アクセストークンは、アカウント設定>開発者>API アクセストークン発行 で発行できます。
リミット
アカウントごとに、15分で200回までリクエストを受け付けます。
残りのリクエスト可能な回数と、リセット日時(エポック秒)はレスポンスヘッダに入っています。
リミットを超過した場合は、以下のようなレスポンスになります。
残りのリクエスト可能な回数と、リセット日時(エポック秒)はレスポンスヘッダに入っています。
レスポンスヘッダの例(一部)
X-Rate-Limit-Limit: 200 X-Rate-Limit-Remaining: 162 X-Rate-Limit-Reset: 1566607265
リミットを超過した場合は、以下のようなレスポンスになります。
レスポンス
Status: 429 Too Many Requests
{ "error": { "code": 429, "message": "too many requests.", "additional_message": "" } }
レスポンス
JSON形式で返却されます。
※エラーレスポンスの形式
{ "error": { "code": 400, "message": "bad request.", "additional_message": "the query is too long." } }
エンドポイント
自分のアカウントデーターを取得する
GET users/me
エンドポイント
GET https://api.chunirec.net/1.0/users/me.json
パラメーター
-
token
- アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.0/users/me.json?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "account": { "id": 1, "name": "kn2kw", "urls": [ { "name": "mypage", "title": "kn2kw さんのマイページ", "url": "https://chunirec.net/users/kn2kw", "url_short": "https://chunirec.net/@kn2kw" } ] }, "player": { "playername": "kn2kw", "honor": "手乗りタイガー", "rating": 15.09, "rating_max": 15.12, "update_on": "2019/08/31" } }
ユーザーのアカウントデーターを取得する
GET users/show
エンドポイント
GET https://api.chunirec.net/1.0/users/show.json
パラメーター
-
user_id
- ユーザーID。
- ここでのユーザーIDは、内部で使用する、整数値のみで表現されるIDです。
user_id
とuser_name
のどちらか一方を指定します。
-
user_name
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。
-
token
- アクセストークン。
注意
・サイトで使用する「ユーザーID」とAPIで使用する「ユーザーID」の意味は違います。(意味については、user_id
とuser_name
パラメーターの説明を参照してください。)・存在しないユーザーと非公開設定にしている自分以外のユーザーは、404エラーになります。
リクエスト例
GET https://api.chunirec.net/1.0/users/show.json?user_name=kn2kw&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "account": { "id": 1, "name": "kn2kw", "urls": [ { "name": "mypage", "title": "kn2kw さんのマイページ", "url": "https://chunirec.net/users/kn2kw", "url_short": "https://chunirec.net/@kn2kw" } ] }, "player": { "playername": "kn2kw", "honor": "手乗りタイガー", "rating": 15.09, "rating_max": 15.12, "update_on": "2019/08/31" } }
曲を検索する
GET music/search
エンドポイント
GET https://api.chunirec.net/1.0/music/search.json
パラメーター
-
q
- 検索文字列。
-
target(省略可)
- 検索対象。
- [
all
,normal
,we
]の内から1つ選択 - デフォルト:
all
-
include_minfo(省略可)
- 曲詳細情報を含めるか。
- [
0
,1
]の内から1つ選択 - デフォルト:
0
-
exact_match(省略可)
- 完全一致検索。
- [
0
,1
]の内から1つ選択 - デフォルト:
0
-
token
- アクセストークン。
注意
release
キーの値は null
になることがあります。
リクエスト例
GET https://api.chunirec.net/1.0/music/search.json?q=さい&include_minfo=1&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "count": { "total": 4, "normal": 3, "we": 1 }, "data": { "normal": [ { "title": "アウターサイエンス", "idx": 119, "genre": "niconico", "artist": "じん", "release": "2016-11-17" }, { "title": "青春サイダー", "idx": 562, "genre": "POPS&ANIME", "artist": "SPRiNGS「温泉むすめ」", "release": "2018-04-05" }, { "title": "チルノおかんのさいきょう☆バイブスごはん", "idx": 635, "genre": "東方Project", "artist": "D.watt feat. ビートまりお (COOL&CREATE)", "release": "2018-10-04" } ], "we": [ { "title": "青春サイダー", "idx": 8117, "genre": "WORLD'S END", "artist": "SPRiNGS「温泉むすめ」", "release": "2018-05-24" } ] } }
曲の譜面情報を得る
GET music/show
エンドポイント
GET https://api.chunirec.net/1.0/music/show.json
パラメーター
-
idx
- 曲内部インデックス
-
token
- アクセストークン。
注意
release
キーの値は null
になることがあります。
リクエスト例
GET https://api.chunirec.net/1.0/music/show.json?idx=493&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "meta": { "idx": 493, "is_we": false, "title": "Rendezvous", "genre": "ORIGINAL", "artist": "Crusher-P", "release": "2017-12-21" }, "data": { "BAS": { "level": 3, "const": 0, "maxcombo": 559, "is_const_unknown": true }, "ADV": { "level": 7, "const": 0, "maxcombo": 876, "is_const_unknown": true }, "EXP": { "level": 10, "const": 10.4, "maxcombo": 1363, "is_const_unknown": false }, "MAS": { "level": 12, "const": 12.5, "maxcombo": 1716, "is_const_unknown": false } } }
譜面の統計情報を得る
GET music/stat
エンドポイント
GET https://api.chunirec.net/1.0/music/stat.json
パラメーター
-
idx
- 曲内部インデックス
-
diff
- 難易度
- [
b
,a
,e
,m
,w
]の内から1つ選択
-
token
- アクセストークン。
注意
・avg
辞書配列の中の値は null
になることがあります。・曲が見つからなくてもエラーになりません。
リクエスト例
GET https://api.chunirec.net/1.0/music/stat.json?idx=3&diff=m&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "users_count": 1405, "count": { "rank": { "max": 64, "sss": 765, "ss+": 134, "ss": 173, "s": 219, "<s": 50 }, "lamp": { "aj": 578, "fc": 214, "other": 613 } }, "avg": { "14.00": "978171.0769", "14.10": "975911.5556", "14.20": "984779.0000", "14.30": "988905.8571", "14.40": "988090.4286", "14.50": "990594.5000", "14.60": "994757.5238", "14.70": "987290.4286", "14.80": "994089.2581", "14.90": "998113.3846", "15.00": "995714.9623", "15.10": "998456.1707", "15.20": "1000936.5581", "15.30": "1001893.0000", "15.40": "1001247.9818", "15.50": "1005429.9182", "15.60": "1004969.6358", "15.70": "1007829.4663", "15.80": "1008766.1902", "15.90": "1008947.0000" } }
全スコアを取得する
GET records/showall
エンドポイント
GET https://api.chunirec.net/1.0/records/showall.json
パラメーター
-
user_id(省略可)
- ユーザーID。
- ここでのユーザーIDは、内部で使用する、整数値のみで表現されるIDです。
user_id
とuser_name
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
user_name(省略可)
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
include_minfo(省略可)
- 曲詳細情報を含めるか。
- [
0
,1
]の内から1つ選択 - デフォルト:
0
-
token
- アクセストークン。
注意
・user_id
またはuser_name
パラメーターを指定することで他人のスコアを取得することが出来ます。省略すると自分のスコアが取得されます。・サイトで使用する「ユーザーID」とAPIで使用する「ユーザーID」の意味は違います。(意味については、
user_id
とuser_name
パラメーターの説明を参照してください。)・存在しないユーザーと非公開設定にしている自分以外のユーザーは、404エラーになります。
リクエスト例
GET https://api.chunirec.net/1.0/records/showall.json?include_minfo=1&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "scores": [ { "idx": 609, "diff": "BAS", "level": 3, "title": "あ・え・い・う・え・お・あお!!", "const": 0, "score": 1009696, "rating": 5, "is_clear": true, "is_fullcombo": true, "is_alljustice": true, "is_fullchain": false, "genre": "POPS&ANIME", "is_const_unknown": true }, { "idx": 395, "diff": "EXP", "level": 8, "title": "レッツゴー!陰陽師", "const": 0, "score": 991552, "rating": 8.66, "is_clear": true, "is_fullcombo": true, "is_alljustice": true, "is_fullchain": false, "genre": "VARIETY", "is_const_unknown": true }, { "idx": 609, "diff": "EXP", "level": 9, "title": "あ・え・い・う・え・お・あお!!", "const": 0, "score": 1009781, "rating": 11, "is_clear": true, "is_fullcombo": true, "is_alljustice": true, "is_fullchain": false, "genre": "POPS&ANIME", "is_const_unknown": true }, { "idx": 632, "diff": "EXP", "level": 8.5, "title": "つるぺったん", "const": 0, "score": 1007378, "rating": 10.67, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "東方Project", "is_const_unknown": true }, { "idx": 497, "diff": "MAS", "level": 12, "title": "L'épilogue", "const": 12.5, "score": 1009572, "rating": 14.5, "is_clear": true, "is_fullcombo": true, "is_alljustice": true, "is_fullchain": false, "genre": "ORIGINAL", "is_const_unknown": false }, { "idx": 609, "diff": "MAS", "level": 12, "title": "あ・え・い・う・え・お・あお!!", "const": 12.4, "score": 1008078, "rating": 14.4, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "POPS&ANIME", "is_const_unknown": false }, { "idx": 733, "diff": "MAS", "level": 13, "title": "アイリちゃんは暗黒魔導士!", "const": 13.5, "score": 1008320, "rating": 15.5, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "ORIGINAL", "is_const_unknown": false }, { "idx": 804, "diff": "MAS", "level": 13, "title": "燃えてもエンジョイ!宛城、炎上!!", "const": 13.3, "score": 1006630, "rating": 15.12, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "イロドリミドリ", "is_const_unknown": false } ] }
全スコアをフィルタして取得する
GET records/filter
エンドポイント
GET https://api.chunirec.net/1.0/records/filter.json
パラメーター
-
title(省略可)
- 曲タイトル(部分一致)
- デフォルト: (空文字列)
-
diff(省略可)
- 難易度
- [
b
,a
,e
,m
]の内から複数選択可。文字を繋げて指定 - デフォルト:
baem
-
min_score(省略可)
- 最小スコア
- デフォルト:
0
-
max_score(省略可)
- 最大スコア
- デフォルト:
1010000
-
min_level(省略可)
- 最小レベル
- n+は、n.5と表記します。
- デフォルト:
1
-
max_level(省略可)
- 最大レベル
- n+は、n.5と表記します。
- デフォルト:
14
-
genre(省略可)
- ジャンル
- [
all
,pops
,niconico
,toho
,variety
,irodori
,gekimai
,orig
]の内から1つ選択 - デフォルト:
all
-
lamp(省略可)
- ランプ
- [
clear
,failed
,fc
,aj
,noajfc
,fch
,nofch
]の内から複数選択可。,
(カンマ)でつなげて指定。 - デフォルト:
clear,failed,fc,aj,noajfc,fch,nofch
-
include_minfo(省略可)
- 曲詳細情報を含めるか。
- [
0
,1
]の内から1つ選択 - デフォルト:
0
-
token
- アクセストークン。
補足
何度も呼び出すときは、records/showall
で一旦スコアを全て取得し、クライアント側でフィルタリングしたほうが速いと思います。
リクエスト例
GET https://api.chunirec.net/1.0/records/filter.json?min_score=1008000&max_score=1008999&min_level=12&lamp=clear,failed,aj,fc,fch,nofch&include_minfo=1&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レスポンス例
Status: 200 OK
{ "scores": [ { "idx": 294, "diff": "MAS", "level": 12.5, "title": "人生リセットボタン", "const": 12.8, "score": 1008639, "rating": 14.8, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "niconico", "is_const_unknown": false }, { "idx": 371, "diff": "MAS", "level": 12.5, "title": "アンハッピーリフレイン", "const": 12.7, "score": 1008300, "rating": 14.7, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "niconico", "is_const_unknown": false }, { "idx": 447, "diff": "MAS", "level": 12, "title": "パーフェクト生命", "const": 12.6, "score": 1008950, "rating": 14.6, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "niconico", "is_const_unknown": false }, { "idx": 658, "diff": "MAS", "level": 12, "title": "おちゃめ機能", "const": 12, "score": 1008322, "rating": 14, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "niconico", "is_const_unknown": false }, { "idx": 720, "diff": "MAS", "level": 12, "title": "ロキ", "const": 12, "score": 1008958, "rating": 14, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "niconico", "is_const_unknown": false } ] }