[BMS] リコメンドの譜面一覧を難易度表形式で取得できるWebアプリをGASで作りデプロイしました [難易度表]
背景
以下のようにリコメンドのページでは、推定実力値的に狙い目の譜面を一覧にしてくれます。
BeMusicSeekerにはこの譜面の一覧を難易度表として取り込む機能があります。しかし、ribbit.xyzが鯖落ちしてから使えなくなっていました。
そこで、ほぼ同様の機能を提供するWebアプリをGAS(Google Apps Script)で作りデプロイしました。
{あなたのLR2ID}の所は書き換えてください
サンプルリンク
難易度表のページなしで、header.jsonしかありませんが、BeMusicSeekerでもbeatorajaでも読み込めます。BeMusicSeeker + LR2なら、リコメン度が高い順にソートされたフォルダから選曲できます。
GASのコード
function getRecommendedAsObj(lr2id) {
const url = "http://walkure.net/hakkyou/recommended_json.cgi?id=" + lr2id;
const fetch = UrlFetchApp.fetch(url);
const response = fetch.getContentText();
const json = JSON.parse(response);
const rows = json.recommended
.filter((obj) => obj.bms.type == 'bms')
.map((obj) => {
let row = {}
row["level"] = String(obj.new_lamp).toUpperCase();
row["org_level"] = parseFloat(obj.p);
row["title"] = String(obj.bms.name);
row["md5"] = String(obj.bms.md5hash);
return row;
});
return rows
}
function getHeaderJson(lr2id, url) {
const headerJson = `{
"name": "リコメンド(${lr2id})",
"data_url": "${url}?lr2id=${lr2id}&contents=data.json",
"symbol": "R★",
"level_order": ["EASY","NORMAL","HARD","FC"],
"folder_sort_key": "level",
"folder_sort_ascending": false
}`
return headerJson
}
function doGet(e) {
// このデプロイ自体のURLを指定する
const url = 'https://script.google.com/macros/s/AKfycbyRtBjD1bpT_DzfZHUAKhmTxvY6xvAirYBKeemtYSzmnsX239fI14X-UldTfwvCJ8wQvw/exec'
// GETパラメータを取得
const lr2id = e.parameter.lr2id;
const contents = e.parameter.contents;
// header.jsonかdata.jsonか分岐させる
switch (contents) {
case 'header.json':
return ContentService.createTextOutput(getHeaderJson(lr2id, url)).setMimeType(ContentService.MimeType.JSON);
case 'data.json':
const obj = getRecommendedAsObj(lr2id)
return ContentService.createTextOutput(JSON.stringify(obj, null, 2)).setMimeType(ContentService.MimeType.JSON);
default:
return ContentService.createTextOutput("URLの末尾は「?lr2id=119698&contents=header.json」のようにLR2IDなどを正しく指定してください。");
}
}
この記事が気に入ったらサポートをしてみませんか?