chunirec API ドキュメント (v1.2)

概要

chunirec API v1.2 の仕様についてまとめたドキュメントです。

▲上へ

chunirec API v1.2 について
chunirec のデーターにアクセスするための API です。スコアを含むレコードとチュウニズムに収録されている楽曲の情報が取得できます。

▲上へ

利用上の注意

chunirec API v1.2 (以下「本 API」といいます) を利用するにあたっての注意事項です。

1. 予告なく本 API の提供を停止する場合があります。
2. 本 API を利用して生じた損失及び障害等には、一切の責任を負いません。
3. 本 API は、非営利目的に限り利用することができます。
注意: 本 API を使用した Web サイトやアプリ等にアフェリエイト等の広告を設置して収益を得る行為は営利目的にあたります。

▲上へ

v1.0 との違い
  • GET records/filter を廃止しました。
    • GET records/showall で全レコードを取得しフィルタリングすることで代替可能です。
  • GET users/meGET users/show で取得できる情報が増えました。
  • GET records/worldsend を追加しました。WORLD'S END のレコードが取得できるようになります。
  • 楽曲を識別するものが整数値のインデックスから 16 進数文字列の ID に変更されました。
  • GET music/search の検索キーワードに検索演算子を使えるようになり、高度な検索ができるようになりました。

▲上へ

リクエスト
ホストは api.chunirec.net です。通信にはすべて HTTPS を使用します。

▲上へ

アクセストークン
すべての API 呼び出しに、アクセストークンを GET メソッドの場合はパラメーター、それ以外はリクエストボディに含める必要があります。
アクセストークンは、アカウント設定>開発者>API アクセストークン発行 で発行できます。

▲上へ

リミット
アカウントごとに、15 分で 120 回までリクエストを受け付けます。
ただし、短い間隔でリクエストを送信した場合、リクエスト可能な回数が減ります。
残りのリクエスト可能な回数と、リセット日時 (エポック秒) はレスポンスヘッダに入っています。
レスポンスヘッダの例 (一部)
X-Rate-Limit-Limit: 120
X-Rate-Limit-Remaining: 112
X-Rate-Limit-Reset: 1589575609

リミットを超過した場合は、以下のようなレスポンスになります。
レスポンス
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.2/users/me.json
パラメーター
  • token
    • アクセストークン。
備考
レスポンスの player.honor_type の数値の意味
{
    0: "(取得できません)",
    1: "ノーマル称号",
    2: "ブロンズ称号",
    3: "シルバー称号",
    4: "ゴールド称号",
    5: "プラチナ称号"
}
レスポンスの player.classemblem の数値の意味
{
    ones_place: {
        0: "無し",
        1: "Ⅰ",
        2: "Ⅱ",
        3: "Ⅲ",
        4: "Ⅳ",
        5: "Ⅴ",
        6: "∞"
    },
    tens_place: {
        0: "帯無し",
        1: "Ⅰ帯",
        2: "Ⅱ帯",
        3: "Ⅲ帯",
        4: "Ⅳ帯",
        5: "Ⅴ帯",
        6: "∞帯"
    }
}
リクエスト例
GET https://api.chunirec.net/1.2/users/me.json?token=YOUR_TOKEN
レスポンス例
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": "主よ、信心なき輩に祖国が侵されるのを救いたまえ。遥か道の果て、我らは約束された地に至らん。",
        "honor_type": 4,
        "level": 30,
        "rating": 15.41,
        "rating_max": 15.42,
        "classemblem": 4,
        "updated_on": "2020-03-24"
    }
}

▲上へ

アカウントデーターを取得する

GET users/show

エンドポイント
GET https://api.chunirec.net/1.2/users/show.json
パラメーター
  • user_id (省略可)
    • ユーザー ID 。
    • ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
    • user_iduser_name のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • user_name (省略可)
    • ユーザー名。
    • ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
    • user_nameuser_id のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • token
    • アクセストークン。
注意
user_id または user_name パラメーターを指定することで他人のスコアを取得することが出来ます。省略すると自分のスコアが取得されます。
・サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、user_iduser_name パラメーターの説明を参照してください。)
・存在しないユーザーと非公開設定にしている自分以外のユーザーは、404 エラーになります。
備考
レスポンスの player.honor_type の数値の意味
{
    0: "(取得できません)",
    1: "ノーマル称号",
    2: "ブロンズ称号",
    3: "シルバー称号",
    4: "ゴールド称号",
    5: "プラチナ称号"
}
レスポンスの player.classemblem の数値の意味
{
    ones_place: {
        0: "無し",
        1: "Ⅰ",
        2: "Ⅱ",
        3: "Ⅲ",
        4: "Ⅳ",
        5: "Ⅴ",
        6: "∞"
    },
    tens_place: {
        0: "帯無し",
        1: "Ⅰ帯",
        2: "Ⅱ帯",
        3: "Ⅲ帯",
        4: "Ⅳ帯",
        5: "Ⅴ帯",
        6: "∞帯"
    }
}
リクエスト例
GET https://api.chunirec.net/1.2/users/show.json?user_name=kn2kw&token=YOUR_TOKEN
レスポンス例
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": "主よ、信心なき輩に祖国が侵されるのを救いたまえ。遥か道の果て、我らは約束された地に至らん。",
        "honor_type": 4,
        "level": 30,
        "rating": 15.41,
        "rating_max": 15.42,
        "classemblem": 4,
        "updated_on": "2020-03-24"
    }
}

▲上へ

GET music/search

エンドポイント
GET https://api.chunirec.net/1.2/music/search.json
パラメーター
  • q
  • token
    • アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.2/music/search.json?q=さい&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
[
    {
        "title": "アウターサイエンス",
        "genre": "niconico",
        "artist": "じん",
        "release": "2016-11-17",
        "id": "874ac79187f1b2fc"
    },
    {
        "title": "青春サイダー",
        "genre": "POPS&ANIME",
        "artist": "SPRiNGS「温泉むすめ」",
        "release": "2018-04-05",
        "id": "31b6d51701adff38"
    },
    {
        "title": "チルノおかんのさいきょう☆バイブスごはん",
        "genre": "東方Project",
        "artist": "D.watt feat. ビートまりお (COOL&CREATE)",
        "release": "2018-10-04",
        "id": "bf2e7cfd03290f1a"
    },
    {
        "title": "お嫁にしなさいっ!",
        "genre": "東方Project",
        "artist": "ARM+夕野ヨシミ (IOSYS)",
        "release": "2019-09-19",
        "id": "02c926bd610cdff3"
    },
    {
        "title": "青春サイダー",
        "genre": "WORLD'S END",
        "artist": "SPRiNGS「温泉むすめ」",
        "release": "2018-05-24",
        "id": "6c919b6ea3ead0b7"
    }
]

▲上へ

楽曲の譜面情報を得る

GET music/show

エンドポイント
GET https://api.chunirec.net/1.2/music/show.json
パラメーター
  • id
    • 楽曲 ID 。
  • token
    • アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.2/music/show.json?id=d300c054c179990a&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{
    "data": {
        "BAS": {
            "level": 3,
            "const": 3,
            "maxcombo": 559,
            "is_const_unknown": false
        },
        "ADV": {
            "level": 7,
            "const": 7,
            "maxcombo": 876,
            "is_const_unknown": false
        },
        "EXP": {
            "level": 10,
            "const": 10.4,
            "maxcombo": 1363,
            "is_const_unknown": false
        },
        "MAS": {
            "level": 12,
            "const": 12.5,
            "maxcombo": 1716,
            "is_const_unknown": false
        }
    },
    "meta": {
        "id": "d300c054c179990a",
        "title": "Rendezvous",
        "genre": "ORIGINAL",
        "artist": "Crusher-P",
        "release": "2017-12-21",
    }
}

▲上へ

譜面の統計情報を得る

GET music/stat

エンドポイント
GET https://api.chunirec.net/1.2/music/stat.json
パラメーター
  • id
    • 楽曲 ID 。
  • diff
    • 難易度。
    • [b, a, e, m, w] の内から一つ選択
  • token
    • アクセストークン。
注意
avg 辞書配列の中の値は null になることがあります。
・曲が見つからなくてもエラーになりません。
リクエスト例
GET https://api.chunirec.net/1.2/music/stat.json?id=6a88218b1a936bd3&diff=m&token=YOUR_TOKEN
レスポンス例
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.2/records/showall.json
パラメーター
  • user_id (省略可)
    • ユーザー ID 。
    • ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
    • user_iduser_name のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • user_name (省略可)
    • ユーザー名。
    • ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
    • user_nameuser_id のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • token
    • アクセストークン。
注意
user_id または user_name パラメーターを指定することで他人のレコードを取得することが出来ます。省略すると自分のレコードが取得されます。
・サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、user_iduser_name パラメーターの説明を参照してください。)
・存在しないユーザーと非公開設定にしている自分以外のユーザーは、404 エラーになります。
リクエスト例
GET https://api.chunirec.net/1.2/records/showall.json?&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{
    "records": [
        {
            "id": "711eb337f4d4bcb0",
            "diff": "MAS",
            "level": 12,
            "title": "あ・え・い・う・え・お・あお!!",
            "const": 12.4,
            "score": 1009211,
            "rating": 14.4,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": true,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "POPS&ANIME",
            "is_played": true
        },
        {
            "id": "e7595766be8ddb20",
            "diff": "MAS",
            "level": 11.5,
            "title": "レッツゴー!陰陽師",
            "const": 11.9,
            "score": 1009214,
            "rating": 13.9,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": true,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "VARIETY",
            "is_played": true
        },
        {
            "id": "5fb48eded517775f",
            "diff": "MAS",
            "level": 12,
            "title": "つるぺったん",
            "const": 12.4,
            "score": 1008549,
            "rating": 14.4,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "東方Project",
            "is_played": true
        },
        {
            "id": "ca471fa4c1b21eec",
            "diff": "MAS",
            "level": 12,
            "title": "L'épilogue",
            "const": 12.5,
            "score": 1009572,
            "rating": 14.5,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": true,
            "is_alljustice": true,
            "is_fullchain": false,
            "genre": "ゲキマイ",
            "is_played": true
        },
        {
            "id": "a40be95f9cdc373e",
            "diff": "MAS",
            "level": 13,
            "title": "アイリちゃんは暗黒魔導士!",
            "const": 13.3,
            "score": 1008877,
            "rating": 15.3,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": true,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "ORIGINAL",
            "is_played": true
        },
    ]
}

▲上へ

WORLD'S END の全レコードを取得する

GET records/worldsend

エンドポイント
GET https://api.chunirec.net/1.2/records/worldsend.json
パラメーター
  • user_id (省略可)
    • ユーザー ID 。
    • ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
    • user_iduser_name のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • user_name (省略可)
    • ユーザー名。
    • ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
    • user_nameuser_id のどちらか一方を指定します。
    • デフォルト: (アクセストークン所持者)
  • token
    • アクセストークン。
注意
user_id または user_name パラメーターを指定することで他人のレコードを取得することが出来ます。省略すると自分のレコードが取得されます。
・サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、user_iduser_name パラメーターの説明を参照してください。)
・存在しないユーザーと非公開設定にしている自分以外のユーザーは、404 エラーになります。
リクエスト例
GET https://api.chunirec.net/1.2/records/worldsend.json?&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{
    "records": [
        {
            "id": "b7317ede27096418",
            "diff": "WE",
            "level": 0,
            "title": "B.B.K.K.B.K.K.",
            "const": 0,
            "score": 943349,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "e858fa8d4ead4585",
            "diff": "WE",
            "level": 0,
            "title": "チルノのパーフェクトさんすう教室",
            "const": 0,
            "score": 974318,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "591fb7484c761de3",
            "diff": "WE",
            "level": 0,
            "title": "回レ!雪月花",
            "const": 0,
            "score": 924336,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "7155c385c74d6a92",
            "diff": "WE",
            "level": 0,
            "title": "ウソラセラ",
            "const": 0,
            "score": 960831,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "50b099a2b2480ba0",
            "diff": "WE",
            "level": 0,
            "title": "灼熱スイッチ",
            "const": 0,
            "score": 1008493,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": true,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "30b233c311048dd4",
            "diff": "WE",
            "level": 0,
            "title": "POP TEAM EPIC",
            "const": 0,
            "score": 1007210,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        },
        {
            "id": "9f324353909cab0d",
            "diff": "WE",
            "level": 0,
            "title": "アリサのテーマ",
            "const": 0,
            "score": 1006860,
            "rating": 0,
            "is_const_unknown": false,
            "is_clear": true,
            "is_fullcombo": false,
            "is_alljustice": false,
            "is_fullchain": false,
            "genre": "WORLD'S END",
            "is_played": true
        }
    ]
}

▲上へ