BPIManagerでは楽曲に関する一連のデータを定義ファイルと称するファイルにまとめて公開しています。
このファイルはJSONで記述されています。
JSONの仕組みは次のようになっています。データはすべてString型で入力します。
{
"version":"20191109", //定義データのバージョン名
"requireVersion":"8", //要求するBPIManager本体のバージョン(例:v0.0.0.8ならば8,v0.0.2.0ならば20)
"body":[
{
"title": "(This Is Not) The Angels", //楽曲名
"difficulty": "4", //楽曲難易度(詳細は下)
"wr": "2716", //歴代1位
"avg": "2398", //皆伝平均
"notes": "1364", //ノート数
"bpm": "33-130", //BPM
"textage": "24/theangel.html?1AB00", //TexTageのURL
"difficultyLevel": "11", //楽曲難易度(詳細は下)
"dpLevel": "0" //DP非公式難易度
},...
]
}
JSON内のデータはすべてString型で記述しますが、次の事項に留意してください。
"wr","avg","notes"はデータベースに登録される際、Number型にキャストされます。
定義ファイルのメタデータとして、versionおよびrequireVersionを指定します。
versionには任意のバージョン名を入力します。
BPIManagerではユーザーが保持する定義データバージョン名と異なるバージョン名の定義ファイルをフェッチした際にデータをアップデートします。
つまり、1文字でも楽曲データを編集した場合には、従前と異なるversion名を指定しなければ変更は反映されません。
requireVersionにはBPIManager本体の要求バージョンを入力します。
たとえばv0.0.0.4以前のバージョンではDPに対応していませんので、DP楽曲の情報を含む定義ファイルを公開する場合には最低でも4を指定してください。
楽曲難易度はdifficultyおよびdifficultyLevelの2つが必要です。
difficultyではいわゆるHYPER,ANOTHER,LEGGENDARIAを識別し、difficultyLevelでは☆換算の難易度を識別します。
difficultyの対応表は次のようになります。
難易度 | SP | DP |
---|---|---|
HYPER | 3 | 8 |
ANOTHER | 4 | 9 |
LEGGENDARIA | 10 | 11 |
difficultyLevelには11または12を指定してください。
すなわち、実際には☆10の楽曲であっても、便宜上☆11または☆12として登録する必要があるということです。
この点については今後対応を練るかもしれません。
DP非公式難易度表記について、SPは0、DPはそれ以外を指定してください。
(0はすべてSPとして、0以外はすべてDPとして認識されます。)
BPIManagerからカスタムされた定義ファイルを読み込むためには、技術的な制約から一定の条件を満たす必要があります。
fetch APIを用いて定義ファイルを取り込んでいるため、CORSに気をつけてください。
ご自身で管理されているサーバーに定義ファイルを設置する場合は、以下の設定が必要です。
Access-Control-Allow-Origin: bpi.poyashi.me
Access-Control-Allow-Methods: GET, OPTIONS
その他サービスにホスティングする場合も上記設定に準じる必要があります。
(v0.0.6.2より)
既に端末に追加済みの楽曲について、楽曲データベースから削除したい場合、楽曲オブジェクト内に"removed"キーを含むことで削除が可能です。
"removed"キーにはbool値を入力することが予定されますが、型チェックはしていないため、このキーさえ存在していれば無条件で楽曲データが削除されます。
楽曲データとともに、その楽曲に紐付けられたスコアデータおよびスコアログデータが削除されます。
すでに登録されている楽曲データとの混合を避けるため、定義ファイルURLを変更する前に楽曲データベースをリセットすることを推奨します。
(設定->データリセット->Songs Database)