LR2 BP減らし周回用のカスタムフォルダを作る
はじめに
こんな感じのフォルダを作る記事です。LR2にはBPソートがないので自分で作ることにしました。
作業
BeMusicSeekerの導入が前提です。
対象とする難易度表のplaylist_idを確認する
BeMusicSeekerのプレイリスト出力フォルダのうちの対象としたい難易度表のフォルダを開き、拡張子が.lr2folder
のファイルをなんでもいいので開く。
#COMMAND
のplaylist_id = xxxxx
を探してIDをメモ。
カスタムフォルダを作る
どこでもいいのでフォルダを作って中に移動。フォルダ名は難易度表名 (order by BP)
などにしておくとわかりやすい?
以下のような内容の拡張子が.lr2folder
のファイルを好きなだけ作る。
SQLがわかる方は#COMMAND
は好みに合わせて改変してください。対象の難易度表を複数にしたりなど
#COMMAND song.hash in (SELECT md5 FROM playlist_entry WHERE playlist_id = 前の作業で確認したIDをここに AND is_removed = 0) AND (minbp BETWEEN 120 AND 130) ORDER BY minbp ASC #MAXTRACKS 0 #TITLE 120 <= BP <= 130
ただ手作業だと面倒なのでカスタムフォルダを自動生成するPythonスクリプトを用意しました。BPを1から10ごとに最大300まで分けたカスタムフォルダを作成します。
(追記)環境構築不要のバッチファイルの方がよかったかも やりたいことはもう実現できているので気が向いたら書く 誰か代わりに書いて(追記おわり)
.lr2folder
を生成する場所に下記のコードをgeneratelr2folder.py
などとして保存してください。
playlist_id = 1 # 前の作業で確認したIDをここに lr2folder_template = lambda lower_limit, upper_limit :f"""#COMMAND song.hash in (SELECT md5 FROM playlist_entry WHERE playlist_id = {playlist_id} AND is_removed = 0) AND (minbp BETWEEN {lower_limit} AND {upper_limit}) ORDER BY minbp ASC #MAXTRACKS 0 #TITLE {lower_limit} <= BP <= {upper_limit} """ for i in range(30): lower_limit = i * 10 + 1 upper_limit = (i + 1) * 10 # print(lr2folder_template(lower_limit, upper_limit)) with open(f"{str(i).zfill(4)}.lr2folder", mode="w") as f: f.write(lr2folder_template(lower_limit, upper_limit))
実行方法の例は以下の通りです。詳しくは各自で調べて
Windows
py generatelr2folder.py
Mac/Linux/WSL
python3 generatelr2folder.py
LR2のJUKEBOXでプレイリストを追加
フォルダをD&Dしておわり。
Google ドライブの仕様変更でBMSが落とせなくなった話の対処とBMSユーザーへのお願い
まとめ
workspaceupdates.googleblog.com
2021年9月13日以降、一度も開いたことのないhttps://drive.google.com/open?id={ファイルID}
やhttps://drive.google.com/file/d/{ファイルID}/
形式のURLからファイルを落とすことができなくなりました。
誰でもファイルにアクセスできるようにするためにはリソースキーが必要になります。過去にファイルに一度でもアクセスしたことのあるアカウントの場合、URLの末尾が自動でhttps://drive.google.com/file/d/{ファイルID}/edit?resourcekey={リソースキー}
のようになります。リソースキーが含まれたURLならば、アカウントさえあれば誰でもファイルにアクセスすることができます。
この仕様変更の厄介な点は、過去にファイルに一度でもアクセスしたことのあるアカウントからは仕様変更に全く気付かないということです。
イベント会場やLR2IRなどでアクセス権が必要と表示され作者の意向に反してダウンロードできないBMSを発見した際は、作者に連絡する or 自身に権限がある場合はURLをリソースキーを含むものに変更することをお願いいたします。
BOFU2017のDayBreak / DusKを例に出します。 manbow.nothing.sh
本体のURLはhttps://drive.google.com/open?id=0B5sLPIyox3GENUhiUFFBSmZSbzg
となっています。このファイルに一度でもアクセスしたことのあるGoogleアカウントでは何の問題もなくダウンロードすることができる一方、そうでないアカウントではアクセス権が必要と表示されてしまいます。
リソースキーを追加したhttps://drive.google.com/file/d/0B5sLPIyox3GENUhiUFFBSmZSbzg/view?usp=sharing&resourcekey=0-YVbIj6LLHkeF7NfsRqhC8Q
のURLならば、今後も誰でもアクセスすることができます。(別のGoogleアカウントやシークレットウィンドウなどから確認できると思います)
bmsidをmd5に変換する
結論
@rib_2_bit様のBMS Search Alternativeを使わせて頂く。
- http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsid=295636の場合
http://www.ribbit.xyz/bms/search/run?search[value]=295636
にGET[]
のURLエンコードに注意- md5の値を取得できるので終わり
- http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsmd5=991873fddda47882925137c52777cf75
自分オリジナルのBMS難易度表を作って公開しよう【無料・Webブラウザ上で完結】
はじめに
自分の好きな譜面や自作譜面をまとめた難易度表を作成・公開したいと思ったことはありませんか?この記事ではGoogle スプレッドシートとGitHub Pagesを利用したBMS難易度表の簡単な作成・公開方法を紹介します。
当記事作成にあたりHex様の記事を参考にさせて頂きました。
Google スプレッドシートの作業
難易度表の作成
Google スプレッドシートで新しいスプレッドシートを作成し、以下の表を1行目にコピペしてください。このような形式で譜面を記述し難易度表を作成します。
lr2ir
の列は必須ではありませんが、=HYPERLINK("http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsmd5="&D2)
などのように入力しておくとスプレッドシートからLR2IRに簡単に飛べて便利です。
level | title | artist | md5 | comment | lr2ir |
---|---|---|---|---|---|
12 | G e n g a o z o _ G O D | 455 / rio / black train | 5110b92d997eabc3d2322556617632ad | 拷問 | |
20 | Air -GOD- | SHIKI / black train | 751738dea1169c5c39db935adfc9e85f | 180 乱打 | |
24 | Love & Justice [GOD] | フロン / ラズベリル / obj: black train | 39d0732ef7fee9ad0c8b044ccbe8a396 | أحد مؤسسي نهضة اليابان الحديثة، فقد كان | |
危険!! | 運命論 | ルゼ ☆ えみゅう。 ☆ 石王マサト ★ UnK-now/37X | 188a99f74ab71804f2e360dcf484545c | levelは文字列なので数字じゃなくてもOK | |
論外!!!! | 戦歌「オルグラリヤ」 | ルゼ / Unk-now / 37E | ec1598e752ce393aa8dced158bf6e39c | The judgement day is coming... |
フィルタの作成や書式設定などで体裁を整えておきましょう。levelのソートは必ず行ってください。
譜面の入力が終わったら、スプレッドシートのID(URLのhttps://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxx/
のxxxxxxxxxxxxxxxxxxxxx
の部分)を記録しておきます。
Apps Scriptの作成
ツール
タブからスクリプト エディタ
を選択しApps Scriptの編集画面を開きます。
以下のソースコードをコピペし、xxxxxxxxxxxxxxxxxxxxx
の部分を先ほど記録したスプレッドシートのIDに書き換えて保存します。
function getSheetAsObj(id, sheet_name) { var sheet = SpreadsheetApp.openById(id).getSheetByName(sheet_name); var rows = sheet.getDataRange().getValues(); var keys = rows.splice(0, 1)[0]; return rows.map(function(row) { var obj = {} row.map(function(item, index) { if (keys[index] != "lr2ir") { obj[keys[index]] = String(item); } }); return obj; }); } function doGet() { var obj = getSheetAsObj('xxxxxxxxxxxxxxxxxxxxx', 'シート1'); // ここにスプレッドシートのID return ContentService.createTextOutput(JSON.stringify(obj, null, 2)).setMimeType(ContentService.MimeType.JSON); }
画面右上のデプロイ
から新しいデプロイ
を選択し、種類の選択
をウェブアプリ
に、次のユーザーとして実行
を自分
に、アクセスできるユーザー
を全員
にしてデプロイします。データへのアクセスを許可を求められた場合はアクセスを承認してください。
デプロイが完了したらURLを記録しておきます。URLを踏んだ際に次期難易度表フォーマットのJSONが表示されればデプロイは成功です。(Stellaの例 このようなテキストが表示されれば正常です。)
スプレッドシートを更新した場合はJSONも勝手に最新の状態になります。(ただしソースコードを更新した場合は再びデプロイする必要があるため注意してください。)
GitHub Pagesの作業
Fork
GitHub Pagesを利用するためにGitHubのアカウントが必要です。持っていない方は作成してください。
HTMLを書きたくない方向けにテンプレートを用意しました。以下のリポジトリを開き、画面右上のFork
を選択してください。リポジトリが自分のアカウントにコピーされ自由に編集できるようになります。
header.json
の編集
header.json
を選択すると以下のようなJSONファイルがプレビューされます。
{ "name" : "ここに難易度表の名前", "symbol" : "ここにシンボル", "data_url" : "ここにJSONのURL" }
鉛筆のようなアイコン(マウスカーソルをかざすとEdit this fileと出てきます。)を選択し、header.json
に難易度表の名前、シンボル(★とか★★とか◆とかstみたいなやつ)、先ほどデプロイしたURLを記述します。
index.html
の編集
index.html
をheader.json
と同様に編集します。ここに難易度表の名前
の部分とここに難易度表の説明文
の部分を書き換えてください。
GitHub Pagesの設定
まずリポジトリの名前がBMS-Table-Template
のままなので変更しましょう。リポジトリの名前はSettings
タブのRepository name
で変更することができ、難易度表のURLはhttps://{あなたのID}.github.io/{変更したリポジトリの名前}/
になります。
Settings
タブからPages
を選択しSource
のNone
をmaster
に変更し保存します。
Your site is ready to be published at https://{あなたのID}.github.io/{変更したリポジトリの名前}/
と出てくるので、このURLを記録しておきます。これが公開された難易度表のURLになります。
LR2の場合はBeMusicSeekerなどで難易度表を読み込むことができます。
これ以降難易度表に譜面を追加したり削除する場合はスプレッドシートを更新するだけで作業が完了します。(Apps ScriptやGitHubは触る必要ありません。)
おわりに
Google スプレッドシートとGitHub Pagesを利用したBMS難易度表の作成・公開の方法を紹介しました。皆さんも是非オリジナルの難易度表を作成してみてください。
テンプレートを改変する場合は次期難易度表フォーマットの詳細が以下のリンク先に載っているので参考にしてください。