mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-30 19:07:58 +03:00
add charts from SDVX Konaste
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -18749,6 +18749,19 @@
|
||||
],
|
||||
"title": "AXION"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "ビートまりお(COOL&CREATE)",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1477,
|
||||
"searchTerms": [
|
||||
"destined_beatmario",
|
||||
"ディスティンド マリオネット"
|
||||
],
|
||||
"title": "Destined Marionette"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "paraoka",
|
||||
@@ -19087,6 +19100,19 @@
|
||||
],
|
||||
"title": "Blue Forest (Prog Keys Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "#EmoCosine",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1515,
|
||||
"searchTerms": [
|
||||
"clochermx_emocosine",
|
||||
"エモクロッシュ"
|
||||
],
|
||||
"title": "#EmoCloche"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "coTatsu",
|
||||
@@ -19139,6 +19165,19 @@
|
||||
],
|
||||
"title": "Re:Elemental Creation"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Yuta Imai",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1522,
|
||||
"searchTerms": [
|
||||
"emeraldasrmx_yutaimai",
|
||||
"エメラルダスユウタイマイミックス"
|
||||
],
|
||||
"title": "EMERALDAS (Yuta Imai Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "bansou",
|
||||
@@ -19178,6 +19217,32 @@
|
||||
],
|
||||
"title": "POSSESSION(Gowrock Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Aoi",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1530,
|
||||
"searchTerms": [
|
||||
"posessionrmx_aoi",
|
||||
"ポゼッションアオイキューイーディーリミックス"
|
||||
],
|
||||
"title": "POSSESSION (Aoi Q.E.D. RMX)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "ろひ",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1531,
|
||||
"searchTerms": [
|
||||
"scarsoffaunarmx_rohi",
|
||||
"スカーズオブファウナロヒリミックス"
|
||||
],
|
||||
"title": "Scars of FAUNA(ろひ Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "HOUJIROU feat. 駄々子",
|
||||
@@ -19217,6 +19282,32 @@
|
||||
],
|
||||
"title": "Valanga(polysha Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Hyuji feat. LIQU@。& TadashiYamamoto",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1537,
|
||||
"searchTerms": [
|
||||
"nascarmx_hyuji",
|
||||
"ナスカノオカハイエナジーリミックス"
|
||||
],
|
||||
"title": "ナスカの丘 (Hi-NRG Remix)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "naka3",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1538,
|
||||
"searchTerms": [
|
||||
"nanahoshirmx_nakasan",
|
||||
"ナナホシラブリーバブリーパーティーミックス"
|
||||
],
|
||||
"title": "ナナホシ(lovely bubbly party mix!)"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "モリモリあつし",
|
||||
@@ -19336,6 +19427,19 @@
|
||||
],
|
||||
"title": "トマヨイ"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "かめりあ",
|
||||
"data": {
|
||||
"displayVersion": "vivid"
|
||||
},
|
||||
"id": 1551,
|
||||
"searchTerms": [
|
||||
"psychoheroes_kameria",
|
||||
"サイコヒーローズ"
|
||||
],
|
||||
"title": "PSYCHO+HEROES"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "MYUKKE.",
|
||||
@@ -19453,6 +19557,19 @@
|
||||
],
|
||||
"title": "月々紅花"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "fZy",
|
||||
"data": {
|
||||
"displayVersion": "vivid"
|
||||
},
|
||||
"id": 1561,
|
||||
"searchTerms": [
|
||||
"yoursoulismine_fzy",
|
||||
"ユアソウルイズマイン"
|
||||
],
|
||||
"title": "Your SOUL Is Mine"
|
||||
},
|
||||
{
|
||||
"altTitles": [
|
||||
"龕omet popcorn"
|
||||
@@ -19494,6 +19611,19 @@
|
||||
],
|
||||
"title": "Sparkling Laser Beam"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "CielArc",
|
||||
"data": {
|
||||
"displayVersion": "vivid"
|
||||
},
|
||||
"id": 1565,
|
||||
"searchTerms": [
|
||||
"screaming_cielarc",
|
||||
"スクリーミング"
|
||||
],
|
||||
"title": "Screaming!!"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "立秋 feat.ちょこ",
|
||||
@@ -19546,6 +19676,19 @@
|
||||
],
|
||||
"title": "Dooooope"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "BlackY feat. Risa Yuzuki",
|
||||
"data": {
|
||||
"displayVersion": "vivid"
|
||||
},
|
||||
"id": 1570,
|
||||
"searchTerms": [
|
||||
"gimmedreamin_blacky",
|
||||
"ギミードリーミン"
|
||||
],
|
||||
"title": "Gimme dreamin'"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "MisomyL",
|
||||
@@ -19559,6 +19702,19 @@
|
||||
],
|
||||
"title": "Ring!Run!Nyan!!"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "めと(Metomate)",
|
||||
"data": {
|
||||
"displayVersion": "vivid"
|
||||
},
|
||||
"id": 1572,
|
||||
"searchTerms": [
|
||||
"kogetsumurakumo_metomate",
|
||||
"コゲツムラクモニシズム"
|
||||
],
|
||||
"title": "孤月群雲に沈む"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "あるふぁ feat. とおる",
|
||||
@@ -20410,6 +20566,84 @@
|
||||
],
|
||||
"title": "METATRON"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "削除 feat. Nikki Simmons",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1647,
|
||||
"searchTerms": [
|
||||
"destr0yer_sakujo",
|
||||
"デストロイヤー"
|
||||
],
|
||||
"title": "Destr0yer"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "xi",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1648,
|
||||
"searchTerms": [
|
||||
"badelixir_xi",
|
||||
"バッドエリクサー"
|
||||
],
|
||||
"title": "Bad Elixir"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "森羅万象",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1649,
|
||||
"searchTerms": [
|
||||
"kiramekiinokori_sinrabansyou",
|
||||
"キラメキイノコリダイセンソウ"
|
||||
],
|
||||
"title": "キラメキ居残り大戦争"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "ビートまりお(COOL&CREATE)",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1650,
|
||||
"searchTerms": [
|
||||
"monmonsimasyo_beatmario",
|
||||
"モンモンシマショ"
|
||||
],
|
||||
"title": "門門しましょ"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "暁Records",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1652,
|
||||
"searchTerms": [
|
||||
"warning_akatsuki_records",
|
||||
"ワーニングワーニングワーニング"
|
||||
],
|
||||
"title": "WARNING×WARNING×WARNING"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "暁Records",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1653,
|
||||
"searchTerms": [
|
||||
"trancedance_akatsuki_records",
|
||||
"トランスダンスアナーキー"
|
||||
],
|
||||
"title": "トランスダンスアナーキー"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "RoughSketch x CANVAS feat. Quimär",
|
||||
@@ -20552,5 +20786,330 @@
|
||||
"シンフォニックティアー"
|
||||
],
|
||||
"title": "Symphonic Tear"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "nonomori feat. 亜沙美",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1675,
|
||||
"searchTerms": [
|
||||
"fuduki_nonomori",
|
||||
"フヅキ"
|
||||
],
|
||||
"title": "文月"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Yu_Asahina",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1681,
|
||||
"searchTerms": [
|
||||
"theclownof24_yuasahina",
|
||||
"ザクラウンオブトゥエンティーフォーステイヤーズ"
|
||||
],
|
||||
"title": "The Clown of 24stairs"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Yooh",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1686,
|
||||
"searchTerms": [
|
||||
"enterthefire_yooh",
|
||||
"エンターザファイヤー"
|
||||
],
|
||||
"title": "Enter The Fire"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "kuro",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1712,
|
||||
"searchTerms": [
|
||||
"innocentazure_kuro",
|
||||
"イノセントアジュール"
|
||||
],
|
||||
"title": "Innocent Azure"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "しーけー",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1713,
|
||||
"searchTerms": [
|
||||
"souhaitbleu_siikee",
|
||||
"スウェブルー"
|
||||
],
|
||||
"title": "Souhait bleu"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Ponchi♪ feat.はぁち",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1718,
|
||||
"searchTerms": [
|
||||
"lovechance_ponchi",
|
||||
"ラヴチャンス"
|
||||
],
|
||||
"title": "ラヴ齶チャンス!!"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Aoi feat. Kuroa*",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1720,
|
||||
"searchTerms": [
|
||||
"gekkanomaitosai_aoi",
|
||||
"ゲッカノブトウサイ"
|
||||
],
|
||||
"title": "月下の舞兎祭"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "つきみぐー、×如月結愛",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1721,
|
||||
"searchTerms": [
|
||||
"nowloading_tsukimiguu",
|
||||
"ナウローディング"
|
||||
],
|
||||
"title": "Now loading…"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "pan+テヅカ feat.桃雛なの",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1723,
|
||||
"searchTerms": [
|
||||
"whipdrip_panteduka",
|
||||
"ホイップドリップ"
|
||||
],
|
||||
"title": "Whip☆Drip"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "MALVA.",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1724,
|
||||
"searchTerms": [
|
||||
"verstarkt_malva",
|
||||
"フェルシュテルクトキラー"
|
||||
],
|
||||
"title": "Verstärkt Killer"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "Enterskip",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1729,
|
||||
"searchTerms": [
|
||||
"funwalk_enterskip",
|
||||
"ファンウォーク"
|
||||
],
|
||||
"title": "Fun walk!!"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "RoughSketch (Notebook Records)",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1734,
|
||||
"searchTerms": [
|
||||
"777_roughsketch",
|
||||
"セブンセブンセブン"
|
||||
],
|
||||
"title": 777
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "立秋 feat.ちょこ",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1735,
|
||||
"searchTerms": [
|
||||
"punaitaiso_risshu",
|
||||
"プナイプナイタイソウ"
|
||||
],
|
||||
"title": "プナイプナイたいそう"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 宝鐘マリン with ホロイズムファンタジー",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1753,
|
||||
"searchTerms": [
|
||||
"hoyhoygensou_marines",
|
||||
"ホイホイゲンソウホロイズム"
|
||||
],
|
||||
"title": "ホイホイ☆幻想ホロイズム"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 宝鐘マリン",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1754,
|
||||
"searchTerms": [
|
||||
"captainmarine_marine",
|
||||
"キャプテンマリンノケツアンカー"
|
||||
],
|
||||
"title": "キャプテン・マリンのケツアンカー"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 兎田ぺこら、さくらみこ、宝鐘マリン",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1755,
|
||||
"searchTerms": [
|
||||
"shiawaseusagi_pekomikomarine",
|
||||
"シアワセウサギペコミコマリン"
|
||||
],
|
||||
"title": "シアワセうさぎ・ぺこみこマリン"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 宝鐘マリン",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1756,
|
||||
"searchTerms": [
|
||||
"earphoneromance_marine",
|
||||
"イヤホンロマンス"
|
||||
],
|
||||
"title": "イヤホンロマンス"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 宝鐘マリン feat.不知火フレア",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1757,
|
||||
"searchTerms": [
|
||||
"overtheborder_marineflare",
|
||||
"オーバーザボーダー"
|
||||
],
|
||||
"title": "Over the Border"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "COOL&CREATE × 宝鐘マリンと愉快な仲間たち",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1758,
|
||||
"searchTerms": [
|
||||
"helpme_erin_remix_marines",
|
||||
"ヘルプミーエーリンゲンソウキョウホロイズムバージョン"
|
||||
],
|
||||
"title": "Help me, ERINNNNNN!! #幻想郷ホロイズムver."
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "cosMo@暴走P",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1762,
|
||||
"searchTerms": [
|
||||
"dosancoodyssey_cosmo",
|
||||
"ドゥサンコオデッセイ"
|
||||
],
|
||||
"title": "ドゥサンコオデッセイ!!"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "BlackY",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1763,
|
||||
"searchTerms": [
|
||||
"azalea_blacky",
|
||||
"アザレア"
|
||||
],
|
||||
"title": "αzalea"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "かめりあ as \"Revenge of Riot\"",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1764,
|
||||
"searchTerms": [
|
||||
"bayonex_kameria",
|
||||
"ベヨネックス"
|
||||
],
|
||||
"title": "BAYONEX"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "ぺのれり",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1765,
|
||||
"searchTerms": [
|
||||
"reverencedflower_penoreri",
|
||||
"レヴァレンスドフラワー"
|
||||
],
|
||||
"title": "Reverenced Flower"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "かねこちはる",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1811,
|
||||
"searchTerms": [
|
||||
"reminiscence_kanekochiharu",
|
||||
"レミニセンス"
|
||||
],
|
||||
"title": "《Re:miniscence》"
|
||||
},
|
||||
{
|
||||
"altTitles": [],
|
||||
"artist": "立秋 feat.ちょこ",
|
||||
"data": {
|
||||
"displayVersion": "exceed"
|
||||
},
|
||||
"id": 1812,
|
||||
"searchTerms": [
|
||||
"take_risshu",
|
||||
"タケ"
|
||||
],
|
||||
"title": "竹"
|
||||
}
|
||||
]
|
||||
@@ -26,7 +26,9 @@
|
||||
"commander": "^8.2.0",
|
||||
"csv-parse": "^5.0.3",
|
||||
"deepmerge": "^4.2.2",
|
||||
"encoding-japanese": "^1.0.30",
|
||||
"fast-json-stable-hash": "^1.0.3",
|
||||
"fast-xml-parser": "^4.0.2",
|
||||
"glob": "^7.2.0",
|
||||
"html-entities": "^2.3.2",
|
||||
"mei-logger": "^1.0.1",
|
||||
|
||||
Generated
+19
@@ -4,7 +4,9 @@ specifiers:
|
||||
commander: ^8.2.0
|
||||
csv-parse: ^5.0.3
|
||||
deepmerge: ^4.2.2
|
||||
encoding-japanese: ^1.0.30
|
||||
fast-json-stable-hash: ^1.0.3
|
||||
fast-xml-parser: ^4.0.2
|
||||
glob: ^7.2.0
|
||||
html-entities: ^2.3.2
|
||||
mei-logger: ^1.0.1
|
||||
@@ -17,7 +19,9 @@ dependencies:
|
||||
commander: 8.2.0
|
||||
csv-parse: 5.0.3
|
||||
deepmerge: 4.2.2
|
||||
encoding-japanese: 1.0.30
|
||||
fast-json-stable-hash: 1.0.3
|
||||
fast-xml-parser: 4.0.2
|
||||
glob: 7.2.0
|
||||
html-entities: 2.3.2
|
||||
mei-logger: 1.0.1
|
||||
@@ -818,6 +822,10 @@ packages:
|
||||
resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==}
|
||||
dev: false
|
||||
|
||||
/encoding-japanese/1.0.30:
|
||||
resolution: {integrity: sha512-bd/DFLAoJetvv7ar/KIpE3CNO8wEuyrt9Xuw6nSMiZ+Vrz/Q21BPsMHvARL2Wz6IKHKXgb+DWZqtRg1vql9cBg==}
|
||||
dev: false
|
||||
|
||||
/es6-error/4.1.1:
|
||||
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
|
||||
dev: false
|
||||
@@ -868,6 +876,13 @@ packages:
|
||||
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
|
||||
dev: false
|
||||
|
||||
/fast-xml-parser/4.0.2:
|
||||
resolution: {integrity: sha512-3GOSbMTZxxrPPQ+aURM7Wia10bi71HBbiG/3mOEEkRSAkRtg4m7UhMSnB2rzOhBeRHyJUWsllOfyNnjTT1b85w==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
strnum: 1.0.5
|
||||
dev: false
|
||||
|
||||
/fecha/4.2.1:
|
||||
resolution: {integrity: sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==}
|
||||
dev: false
|
||||
@@ -1995,6 +2010,10 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/strnum/1.0.5:
|
||||
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
||||
dev: false
|
||||
|
||||
/supports-color/5.5.0:
|
||||
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
const { Command } = require("commander");
|
||||
const { XMLParser } = require("fast-xml-parser");
|
||||
const Encoding = require("encoding-japanese");
|
||||
const fs = require("fs");
|
||||
const { CreateChartID, ReadCollection, WriteCollection } = require("../util");
|
||||
|
||||
const VERSIONS = {
|
||||
1: "booth",
|
||||
2: "inf",
|
||||
3: "gw",
|
||||
4: "heaven",
|
||||
5: "vivid",
|
||||
6: "exceed",
|
||||
};
|
||||
|
||||
const VERSION_DIFFICULTIES = {
|
||||
2: "INF",
|
||||
3: "GRV",
|
||||
4: "HVN",
|
||||
5: "VVD",
|
||||
};
|
||||
|
||||
const DIFFICULTIES = {
|
||||
"novice": "NOV",
|
||||
"advanced": "ADV",
|
||||
"exhaust": "EXH",
|
||||
"maximum": "MXM",
|
||||
};
|
||||
|
||||
const SHITTY_SJIS_OVERRIDE_TITLES = {
|
||||
1724: "Verstärkt Killer",
|
||||
}
|
||||
|
||||
function getDifficulty(diffKey, version) {
|
||||
if (diffKey === "infinite") {
|
||||
return VERSION_DIFFICULTIES[version];
|
||||
}
|
||||
|
||||
return DIFFICULTIES[diffKey];
|
||||
}
|
||||
|
||||
function getTitle(id, title) {
|
||||
return SHITTY_SJIS_OVERRIDE_TITLES[id] || title;
|
||||
}
|
||||
|
||||
const program = new Command();
|
||||
program.option("-f, --file <XML File>")
|
||||
program.parse(process.argv);
|
||||
const options = program.opts();
|
||||
|
||||
const parser = new XMLParser({ ignoreAttributes: false });
|
||||
const fileString = Encoding.convert(fs.readFileSync(options.file), {
|
||||
to: "UNICODE",
|
||||
from: "SJIS",
|
||||
type: "string"
|
||||
});
|
||||
const xmlData = parser.parse(fileString);
|
||||
|
||||
const songs = ReadCollection("songs-sdvx.json");
|
||||
const charts = ReadCollection("charts-sdvx.json");
|
||||
|
||||
let versionAddedCount = 0;
|
||||
let newChartCount = 0;
|
||||
|
||||
for (const music of xmlData.mdb.music) {
|
||||
const id = Number(music["@_id"]);
|
||||
|
||||
const newSong = !songs.find(song => song.id === id);
|
||||
if (newSong) {
|
||||
songs.push({
|
||||
id,
|
||||
title: getTitle(id, music.info.title_name),
|
||||
artist: music.info.artist_name,
|
||||
data: {
|
||||
displayVersion: VERSIONS[music.info.version["#text"]],
|
||||
},
|
||||
altTitles: [],
|
||||
searchTerms: [
|
||||
music.info.ascii,
|
||||
music.info.title_yomigana,
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
for (const diffKey in music.difficulty) {
|
||||
const diffData = music.difficulty[diffKey];
|
||||
const levelNum = Number(diffData.difnum["#text"]);
|
||||
if (levelNum === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const difficulty = getDifficulty(diffKey, music.info.inf_ver["#text"]);
|
||||
|
||||
const chartIndex = charts.findIndex(chart =>
|
||||
chart.songID === id && chart.difficulty === difficulty);
|
||||
if (chartIndex === -1) {
|
||||
charts.push({
|
||||
chartID: CreateChartID(),
|
||||
difficulty,
|
||||
songID: id,
|
||||
playtype: "Single",
|
||||
levelNum,
|
||||
level: levelNum.toString(),
|
||||
data: {
|
||||
inGameID: id,
|
||||
arcChartID: null,
|
||||
},
|
||||
isPrimary: true,
|
||||
versions: ["konaste"],
|
||||
tierlistInfo: {},
|
||||
rgcID: null,
|
||||
});
|
||||
|
||||
if (!newSong) {
|
||||
console.log(`New ${difficulty} ${levelNum} for song id ${id}`);
|
||||
}
|
||||
|
||||
newChartCount++;
|
||||
} else if (!charts[chartIndex].versions.includes("konaste")) {
|
||||
charts[chartIndex].versions.push("konaste");
|
||||
|
||||
versionAddedCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Added "konaste" version to ${versionAddedCount} charts.`);
|
||||
console.log(`Added ${newChartCount} brand new charts.`);
|
||||
|
||||
WriteCollection("songs-sdvx.json", songs);
|
||||
WriteCollection("charts-sdvx.json", charts);
|
||||
@@ -27,13 +27,17 @@ function ReadCollection(name) {
|
||||
return JSON.parse(fs.readFileSync(p));
|
||||
}
|
||||
|
||||
function WriteCollection(name, data) {
|
||||
fs.writeFileSync(path.join(COLLECTIONS_DIR, name), JSON.stringify(data, null, "\t"));
|
||||
|
||||
DeterministicCollectionSort();
|
||||
}
|
||||
|
||||
function MutateCollection(name, cb) {
|
||||
|
||||
const data = cb(ReadCollection(name));
|
||||
|
||||
fs.writeFileSync(path.join(COLLECTIONS_DIR, name), JSON.stringify(data, null, "\t"));
|
||||
|
||||
DeterministicCollectionSort();
|
||||
WriteCollection(name, data);
|
||||
}
|
||||
|
||||
function CreateChartID() {
|
||||
@@ -114,6 +118,7 @@ module.exports = {
|
||||
CreateChartID,
|
||||
CreateFolderID,
|
||||
ReadCollection,
|
||||
WriteCollection,
|
||||
EfficientInPlaceDeepmerge,
|
||||
AddSupportForBMSTable
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user