楽曲データベース JSON モード 仕様 rev1.7 (DIA ver0.72) [このドキュメントについて] Database for Idol Analysts (DIA) の楽曲DBの返す jsonデータ の仕様です。 将来的にはクエリ機能を追加する可能性がありますが、現在は単なる一覧を返します。 このドキュメントは日本語が理解でき、スクフェスのプレイ経験があり、jsonデータを扱うプログラムを書ける程度の知識を前提としています。 上記に当てはまるにも関わらず意図が理解できない場合はドキュメントの欠陥ですので、@waki_renda までお問い合わせください。 [URL] http://sifdb.msmrrenda.net/music/json (安定版) http://ruby.3sh.msmrrenda.net/music/json (テスト環境・開発版) 全てのリクエストはGETで発行します。 将来的に、URL末尾に命令群をつけることによるクエリ機能の搭載が予定されています。 [top level] levels: array of string 各難易度の文字列ラベルデータが格納されています。 現行のバージョンでは["easy","normal","hard","expert","ex_rand","master"]で固定ですが、将来追加される可能性があります。 楽曲データの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です。 このIDでソートした際に楽曲選択画面順になることが保障されています。 このIDは、先行配信曲の本配信時に変更される可能性があります。 μ'sモード楽曲 ( Aqoursモード楽曲はそれぞれ+1000) 1- 200: 通常楽曲 201- 300: イベント先行配信曲(通常楽曲未解禁) 301- 400: 先行配信 401- 500: (未使用) 501- 600: 日替わり楽曲 601- 900: (未使用) 901- 999: 期間限定配信 time: integer 楽曲の時間を示します。 ジャケットが消えてメンバーが表示されてから、 フルコンボ・クリアの表示が出るまでの秒数をカウントしています。 notes: array of integer 各難易度における譜面のアイコン数を示します。 0はその難易度が未実装であることを、-1は一つ下の難易度と同じことを示します。 -1はランダム譜面がEXPERTのアイコン数を参照するときに使用されます。 nps: array of float 各難易度における平均密度を示します。 未実装譜面において、この値が0であることを期待してはいけません。 また、浮動小数点の丸め込みの性質上、負の値を取る可能性があります。 譜面実装の有無を判定するときは、必ずlevelsを参照してください。 levels: array of integer 各難易度のレベルを示します。 0はその難易度が未実装であることを示します。 以前はlevelsが11の場合、その譜面は超難関扱いとしていましたが、 スクフェスver4.0でLv11の超難関表示が削除されたため、この仕様は削除されました。 type: string ( =~ /^[spc]$/ ) 楽曲の属性を示します。 s: スマイル p: ピュア c: クール unit: integer 歌唱メンバーを示します。 bit 1: 穂乃果 (中略) bit 9: にこ bit10: 千歌 (中略) bit18: ルビィ bit19: A-RISE bit20: Reserved (Saint Snow) bit21-29: Reserved 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でAC版データベースに存在します。 excid: integer or (undefined) excflag: integer or (undefined) bit 1: SIF -> ASA 交換譜面あり bit 2: ASA -> SIF 交換譜面あり excflagが定義されているとき、いずれかの交換譜面が実装されています。 実装されているとき、excidの値は、譜面交換版の楽曲データのIDを示します。 swing: array of integer 各難易度においてスイングアイコンが存在するかのフラグです。 1のとき、その難易度はスイングアイコンが存在します。 また、キーワード検索において「スイング譜面」にマッチするようになります。