Qman's Diary

キューマン・エノビクトのブログです。
メインのサイトはこちら: キューマンのコンテンツ置き場
Twitter: @QmanEnobikto

【備忘録】SEGA音ゲー3機種の公式サイトの裏で流れてる楽曲リストJSONの解説

SEGA音ゲー3機種の公式サイトの裏には、楽曲リスト等のためのJSONが流れています。
エンドポイントさえ知っていれば、それらを取得して活用することも可能です。
ただ、正規で公開されているものではありませんし、いつ仕様が変更されたり使えなくなったりしても一切文句は言えません。
この情報を利用する際は、何があっても自己責任でお願いします。

目次

CHUNITHM

楽曲リスト

▼エンドポイント

https://chunithm.sega.jp/storage/json/music.json
‍
著作権表示はJSONの中からは消えた。楽曲リストの一番下に全ての著作権表示がまとめて書いてある。

▼レスポンス例

[
    {
        "id": "2065",
        "catname": "ORIGINAL",
        "newflag": "0",
        "title": "創世のコンツェルティーナ",
        "reading": "ソウセイノコンツエルテイウナ",
        "artist": "大嶋啓之",
        "lev_bas": "3",
        "lev_adv": "7",
        "lev_exp": "10+",
        "lev_mas": "13",
        "lev_ult": "",
        "we_kanji": "",
        "we_star": "",
        "image": "ec89f55fcf6e1c66.jpg"
    },
    {
        "id": "107",
        "catname": "ORIGINAL",
        "newflag": "0",
        "title": "We Gonna Journey",
        "reading": "WEGONNAJOURNEY",
        "artist": "Queen P.A.L.",
        "lev_bas": "3",
        "lev_adv": "6",
        "lev_exp": "11",
        "lev_mas": "14",
        "lev_ult": "14+",
        "we_kanji": "",
        "we_star": "",
        "image": "b43fef626f5b88cd.jpg"
    },
    {
        "id": "8081",
        "catname": "VARIETY",
        "newflag": "0",
        "title": "檄!帝国華撃団",
        "reading": "ケキテイコクカケキタン",
        "artist": "真宮寺さくら(横山智佐)&帝国歌劇団「サクラ大戦」",
        "lev_bas": "",
        "lev_adv": "",
        "lev_exp": "",
        "lev_mas": "",
        "lev_ult": "",
        "we_kanji": "歌",
        "we_star": "3",
        "image": "b5570c700e7bbf75.jpg"
    },
]
‍
実際は1つのリストの中にすべての楽曲が入っている。
ここでは通常の楽曲とULTIMAの存在する楽曲、WORLD'S END楽曲1つずつを例として挙げた。
同一楽曲であっても通常譜面WORLD'S END譜面で1つずつ(WORLD'S END譜面が複数存在する場合はその数だけ)オブジェクトが存在する。

▼各key/valueの説明
  • id: 楽曲ID
  • catname: カテゴリ名
  • newflag: 新曲か否か。新曲なら1が、そうでなければ0が文字列として入っている
  • title: 楽曲タイトル
  • reading: 不明(ソートのための曲名?)
  • artist: 楽曲アーティスト
  • lev_baslev_mas: それぞれBASIC~MASTERの譜面難易度。WORLD'S END譜面の場合は空欄
  • lev_ult: ULTIMAの譜面難易度。ULTIMAが存在しないか、WORLD'S ENDの場合は空欄
  • we_kanji: WORLD'S ENDの譜面属性。漢字1文字もしくは『!』『?』が入る。通常譜面の場合は空欄
  • we_star: WORLD'S ENDの譜面難易度。数字「1」「3」「5」「7」「9」が文字列として入り、それぞれ☆~☆☆☆☆☆に対応する。通常譜面の場合は空欄
  • image: ジャケット画像のファイル名。URLhttps://new.chunithm-net.com/chuni-mobile/html/mobile/img/に付け足すと画像を取得できる

CHUNITHM海外版

楽曲リスト

▼エンドポイント

https://chunithm.sega.com/assets/data/common.json
‍
以前まではmaimaiでらっくすと同じく、大型アップデートでしか更新されなさそうな雰囲気を醸し出していたのだが、(おそらくSUPER STAR PLUSから)サイトの見た目が整い、 「情報は最新ではない可能性があります」(原文: "The Music List on this website may not be up-to-date.")の文言も消えた。

▼レスポンス例

[
    {
        "id": "7265",
        "release": "220303",
        "key": "",
        "title": "[CRYSTAL_ACCESS]",
        "catcode": "ORIGINAL",
        "category": "original",
        "new": "〇",
        "reading": "CRYSTALACCESS",
        "artist": "Blacklolita",
        "lev_bas": "4",
        "lev_adv": "6",
        "lev_exp": "10+",
        "lev_mas": "14+",
        "copyright1": "",
        "image": "7dd150d6.jpg"
    },
    {
        "id": "8217",
        "release": "220303",
        "key": "",
        "title": "幾四音-Ixion-",
        "catcode": "WORLD'S END",
        "category": "we",
        "new": "",
        "reading": "イクシオンIXION",
        "artist": "M.S.S Project",
        "lev_we": "☆",
        "we_tex": "止",
        "copyright1": "",
        "image": "535f28ae.jpg"
    },
    {
        "id": "4001",
        "release": "220303",
        "key": "",
        "title": "FLOWER",
        "catcode": "ULTIMA",
        "category": "ultima",
        "new": "〇",
        "reading": "FLOWER",
        "artist": "DJ YOSHITAKA",
        "lev_ul": "14",
        "copyright1": "©Konami Amusement",
        "image": "c5adb583.jpg"
    }
]
‍
実際は1つのリストの中にすべての楽曲が入っている。
ここでは通常の楽曲とULTIMAの楽曲、WORLD'S END楽曲1つずつを例として挙げた。
同一楽曲であっても通常譜面WORLD'S END譜面で1つずつ(WORLD'S END譜面が複数存在する場合はその数だけ)オブジェクトが存在する。
日本版と同様CHUNITHM NEWにアップデートされたわけだが、ULTIMAは独立して管理されているようだ。

maimaiでらっくす

楽曲リスト

▼エンドポイント

https://maimai.sega.jp/data/maimai_songs.json
‍
以前まで同じJSONファイルにあった著作権表記は、https://maimai.sega.jp/data/RightsInfoText.jsonにまとめられている。

▼レスポンス例

[
    {
        "artist": "Team Grimoire vs Laur",
        "catcode": "ゲーム&バラエティ",
        "dx_lev_bas": "5",
        "dx_lev_adv": "8",
        "dx_lev_exp": "12",
        "dx_lev_mas": "14",
        "image_url": "6d9c69398720e097.png",
        "sort": "477",
        "title": "Grievous Lady",
        "title_kana": "GRIEVOUSLADY",
        "version": "21008"
    },
    {
        "artist": "ナユタン星人",
        "catcode": "niconico&ボーカロイド",
        "dx_lev_bas": "4",
        "dx_lev_adv": "7",
        "dx_lev_exp": "9",
        "dx_lev_mas": "12+",
        "image_url": "dfd85cc1f0611a87.png",
        "lev_bas": "5",
        "lev_adv": "7",
        "lev_exp": "10",
        "lev_mas": "12+",
        "sort": "153",
        "title": "ダンスロボットダンス",
        "title_kana": "タンスロホツトタンス",
        "version": "19007"
    },
    {
        "artist": "TAKU1175 ft.駄々子",
        "catcode": "maimai",
        "date": "NEW",
        "dx_lev_bas": "4",
        "dx_lev_adv": "7+",
        "dx_lev_exp": "10+",
        "dx_lev_mas": "12+",
        "image_url": "c110c819a6c43a54.png",
        "key": "○",
        "release": "210528",
        "sort": "614",
        "title": "星めぐり、果ての君へ。",
        "title_kana": "ホシメクリハテノキミヘ",
        "version": "21506"
    }
]
‍
実際は1つのリストの中にすべての楽曲が入っている。
譜面レベル部分以外のkeyが辞書順にソートされている。

▼各key/valueの説明
  • artist: 楽曲アーティスト
  • catcode: カテゴリ名
  • date: 新曲か否か。新曲ならNEWというvalueが入る。そうでなければ存在しない
  • dx_lev_basdx_lev_remas: それぞれBASIC~Re:MASTERのでらっくす譜面難易度。Re:Masterに関しては存在しない場合もあるほか、でらっくす譜面がなければ存在しない
  • id: 不明なID。複数楽曲に同じIDが割り振られている。追加日が同じ楽曲は同じIDになる?
  • image_url: ジャケット画像のファイル名。URLhttps://maimaidx.jp/maimai-mobile/img/Music/に付け足すと画像を取得できる。以前はURLが違った
  • key: 不明(解禁が必要か否か?)。存在すればというvalueが入る。もしくは存在しない
  • release: 楽曲リリース日(YYMMDD)。JSONのURL変更に際して2021年3月18日以前の情報が消えているので存在しない場合もある
  • lev_baslev_remas: それぞれBASIC~Re:MASTERのスタンダード譜面難易度。Re:Masterに関しては存在しない場合もあるほか、スタンダード譜面がなければ存在しない
  • sort: 不明。おそらく楽曲ID
  • title: 楽曲タイトル
  • title_kana: 不明。CHUNITHMにあったreadingと同じ役割とみられる
  • version: 不明。おそらく曲が入ったバージョン(大型アップデートで変わるものではなく、曲の更新があるごとに変わるもの)を示しているが、どれがどれと紐付いているのかはわからない

オンゲキ

楽曲リスト

▼エンドポイント

https://ongeki.sega.jp/assets/json/music/music.json
‍
オンゲキ RED PLUSでファイル名が現在のものになった。
▼レスポンス例

[
    {
        "new": "",
        "date": "20200930",
        "title": "STARTLINER -三角 葵ソロver.-",
        "title_sort": "STARTLINERミスミアオイソロVER",
        "artist": "曲:kz(livetune)/歌:三角 葵(CV:春野 杏)",
        "id": "7020",
        "chap_id": "01001",
        "chapter": "目指せ! いっぱいのエール!",
        "character": "三角 葵",
        "chara_id": "1030",
        "category": "オンゲキ",
        "category_id": "06",
        "lunatic": "",
        "bonus": "1",
        "copyright1": "-",
        "lev_bas": "2",
        "lev_adv": "5",
        "lev_exc": "8+",
        "lev_mas": "11",
        "lev_lnt": "",
        "image_url": "01d93ad79c83.jpg"
    },
    {
        "new": "",
        "date": "20200930",
        "title": "東亞 -O.N.G.E.K.I. MIX-",
        "title_sort": "トウアONGEKIMIX",
        "artist": "並木 学「怒首領蜂大往生」",
        "id": "2060",
        "chap_id": "04001",
        "chapter": "災厄、来たる",
        "character": "あおニャン",
        "chara_id": "9040",
        "category": "VARIETY",
        "category_id": "04",
        "lunatic": "1",
        "bonus": "",
        "copyright1": "-",
        "lev_bas": "",
        "lev_adv": "",
        "lev_exc": "",
        "lev_mas": "",
        "lev_lnt": "13+",
        "image_url": "eff9c7f18fd4.jpg"
    }
]
‍
実際は1つのリストの中にすべての楽曲が入っている。
ここでは通常楽曲とLUNATIC楽曲1つずつを例として挙げた。
同一楽曲であっても通常譜面とLUNATIC譜面で1つずつオブジェクトが存在する。

▼各key/valueの説明
  • new: 新曲か否か。新曲ならNEWがvalueに入る
  • date: 楽曲リリース日(YYYYMMDD)
  • title: 楽曲タイトル
  • title_sort: 名前からしてソートのための曲名?CHUNITHMのreading、maimaiのtitle_kanaと同じと思われる
  • artist: 楽曲アーティスト
  • id: 楽曲ID
  • chap_id: チャプターID
  • chapter: チャプター名
  • character: 対戦相手キャラ名
  • chara_id: 対戦相手キャラID
  • category: カテゴリ名
  • category_id: カテゴリID
  • lunatic: LUNATICか否か。LUNATICなら1、それ以外なら空白となる。
  • bonus: ボーナストラックか否か。ボーナストラックなら1、それ以外なら空白となる。
  • copyright1: 著作権表示。ない場合は-が入る
  • lev_baslev_mas: それぞれBASIC~MASTERの譜面難易度。LUNATIC譜面の場合は空白となる。EXPが『EXC』となっていることに注意
  • lev_lnt: LUNATICの譜面難易度。通常譜面の場合は空白となる
  • image_url: ジャケット画像のファイル名。URLhttps://ongeki-net.com/ongeki-mobile/img/music/に付け足すと画像を取得できる

ちなみにhttps://ongeki.sega.jp/assets/json/music/categories.jsonというJSONもあるが、これは中身を見る限り完全にサイト上での楽曲検索用っぽいのであんまり我々が使えるものではなさそう。

maimaiでらっくす海外版について

maimaiでらっくすにも、日本版と似た仕様で楽曲一覧のJSONが用意されている。
しかし、サイトは(おそらく)大型アップデートのときにしか更新されず、楽曲情報も最新ではない。
ざっと探した限りではちゃんと更新されているWikiも見当たらず、公式Facebookを追うしかないと思われるが、各投稿をいい感じに整えてJSONとかにするのは多分至難の業である。
(海外版のmaimaiでらっくす-NETのアカウントを入手してSeleniumとかでスクレイピングできれば有料化しないかぎりは一番正確な情報を入手できそう)
maimai海外版最終更新
2021/06/21時点での公式サイト楽曲検索ページ。

まとめ

ゲーム自体の難易度まわりの仕様は似てるのにゲームによって仕様がバラバラすぎるだろと思ってたけどだんだん統合されてきてるような雰囲気を感じなくもない

ツイート