Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
定義ファイルについて

定義ファイルの仕様について

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非公式難易度表記

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment