録ASA 楽曲データベース JSON モード 仕様 rev1.8 (ASN ver0.80) [このドキュメントについて] After School Navigator (ASN) の楽曲DBの返す jsonデータ の仕様です。 将来的にはクエリ機能を追加する可能性がありますが、現在は単なる一覧を返します。 このドキュメントは日本語が理解でき、スクフェス・スクフェスACのプレイ経験があり、 jsonデータを扱うプログラムを書ける程度の知識を前提としています。 上記に当てはまるにも関わらず意図が理解できない場合はドキュメントの欠陥ですので、@waki_renda までお問い合わせください。 [URL] http://asadb.msmrrenda.net/music/json (安定版) http://acruby.3sh.msmrrenda.net/music/json (テスト環境・開発版) 全てのリクエストはGETで発行します。 将来的に、URL末尾に命令群をつけることによるクエリ機能の搭載が予定されています。 [top level] levels: array of string 各難易度の文字列ラベルデータが格納されています。 現行のバージョンでは["easy","normal","hard","extreme","challenge"]で固定ですが、将来追加される可能性があります。 楽曲データのnotesやnpsはこの順番で格納されており、 levels, notes, nps の各配列は、全て要素数が一致することが保障されています。 musictable: array of category 以下に示すカテゴリデータフォーマットに従ってカテゴリ分けされた楽曲が格納されています。 [カテゴリデータ] name: string カテゴリの名前です。 gid: integer カテゴリのIDです。カテゴリ内の楽曲のgidはこの値+1から始まります。 data: array of music 以下に示す楽曲データフォーマットに従って格納されています。 [楽曲データ] title: string 楽曲名を示す文字列です。文字参照・実体参照が含まれる可能性がありますが、 現行のバージョンで該当楽曲は存在しません。 ruby: string 楽曲名のふりがなです。黒澤ルビィとの関係はありません。 この値でソートした際に日本語の曲名順になることが保障されています。 例外として Mermaid festa vol.1 および Mermaid festa vol.2 ~Passionate~ は、 日本語の読み(つー、わん)ではなく数字の1、2の順になるようにデータが入っています。 この項目には「ひらがな」と「全角の数字」のみが入ることが保障されています。 長音記号は直前の母音に変換、英語は日本語表記に変換、それ以外の記号類は削除されています。 id: integer データベース内で一意なIDです。 このIDはsifdb/asadbで同一楽曲に対し一意であり、今後変更されないことが保障されています。 sifdb/asadbの片方だけを見たい場合に連番であることは保証されません。(ver 0.60以降) 一見リリース順や実装順に見えますが、順番に意味はありません。 しいて言うなら、DBデータ投入者がデータを投入した順番です。 gid: integer データベース内で一意なIDです。 このIDでソートした際に楽曲カテゴリ順、カテゴリ内ではCDリリース順になることが保障されています。 このIDはカテゴリ間の番号調整で変更される可能性があります。 gidには「今後カップリング曲実装の可能性が高い」「実装順とCDリリース順が異なる」などの理由から、 意図的に欠番を作ることがあります。 sel: integer データベース内で一意なIDです。 0.60bから全曲解放時の選曲画面の表示順になりました。 現在のところ、2桁か3桁の数字xxyで、 xx: 画面の番号 (1-7: 通常譜面, 51-: 連動譜面) y: 画面内の表示位置 (1-5, 画面内の場所は 53124 とする) の規則に基づいて作られています。 楽曲追加により将来的に変動する可能性があります。 (テスト環境 acruby.3sh.msmrrenda.net 限定の値) 100yは、該当楽曲は実装済みであるものの、表示位置が現状不明であることを示します。 999yは、該当楽曲がまだ実装されていないことを示します。 time: integer 楽曲の時間を示します。 各種演出が消えて暗転が解除され、ジャッジリングが表示されてから、 協力フルコンボ・クリアの表示が出るまでの秒数をカウントしています。 notes: array of integer 各難易度における譜面のアイコン数を示します。 -1は一つ下の難易度と同じことを示しますが、現在のところこの仕様は使われていません。 nps: array of float 各難易度における平均密度を示します。 未実装譜面において、この値が0であることを期待してはいけません。 また、浮動小数点の丸め込みの性質上、負の値を取る可能性があります。 譜面実装の有無を判定するときは、必ずlevelsを参照してください。 levels: array of integer 各難易度のレベルを示します。 0はその難易度のデータが存在しないことを示しています。 (連動譜面の場合を除き、ゲーム中には存在していますが、データベースにデータが入っていません。) type: string ( =~ /^[A-G]$/ ) 0.76以降は、スクリーンのあるステージで流れる映像のタイプです。 0.74以前では、スマートフォン版における属性でした。 unit: integer 歌唱メンバーを示します。 bit 1: 穂乃果 (中略) bit 9: にこ bit10: 千歌 (中略) bit18: ルビィ bit19-20: (Reserved) bit10-18は表示上・システム上すでに使用可能になっていますが、本ドキュメント記載時点で該当楽曲はありません。 notes_rankcount: array of integer アイコン数ランキングの同難易度中の順位です。 nps_rankcount: array of integer 密度ランキングの同難易度中の順位です。 notes_rankcount_level: array of integer アイコン数ランキングの同難易度・同レベル中の順位です。 nps_rankcount_level: array of integer 密度ランキングの同難易度・同レベル中の順位です。 note: string 現在未使用 keywords: array of string 検索用キーワードの配列です。 linkflag: 1 or (undefined) linkflagが定義されているとき、その楽曲が同IDでスマートフォン版データベースに存在します。 excid: integer or (undefined) excflag: integer or (undefined) bit 1: SIF -> ASA 交換譜面あり bit 2: ASA -> SIF 交換譜面あり excidが定義されているとき、いずれかの交換譜面が実装されています。 実装されているとき、excidの値は、譜面交換版の楽曲データのIDを示します。