[+] maimai DX Tickets

pull/6/head
Azalea Gui 2024-02-06 06:13:08 -05:00
parent 2a800a825b
commit 363c9ff028
4 changed files with 160 additions and 5 deletions

View File

@ -0,0 +1,37 @@
CREATE TABLE `maimai2_game_ticket` (
`id` bigint(20) NOT NULL,
`name` varchar(255) NOT NULL,
`credits` int(8) NOT NULL,
`kind` varchar(255) NOT NULL,
`max` int(16) NOT NULL,
`detail` varchar(255) NOT NULL,
`event_id` bigint(20) NOT NULL,
`event_name` varchar(255) NOT NULL
);
INSERT INTO `maimai2_game_ticket` (`id`, `name`, `credits`, `kind`, `max`, `detail`, `event_id`, `event_name`) VALUES
(0, '使用しない', 0, 'None', 0, 'チケットを使用しません', 1, '無期限常時解放'),
(2, '2倍チケット', 1, 'Paid', 0, '2倍チケット', 1, '無期限常時解放'),
(3, '3倍チケット', 2, 'Paid', 0, '3倍チケット', 1, '無期限常時解放'),
(4, '4倍チケット', 3, 'Paid', 0, '4倍チケット', 0, '解放なし'),
(5, '5倍チケット', 4, 'Paid', 0, '5倍チケット', 24021661, '240216_06_1有料5倍チケット解放'),
(6, '6倍チケット', 5, 'Paid', 0, '6倍チケット', 0, '解放なし'),
(10001, 'イベント1.5倍チケット_1', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10002, 'イベント2倍チケット_1', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10003, 'イベント3倍チケット_1', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10005, 'イベント5倍チケット_1', 0, 'Event', 1, '期限付き5倍チケット', 23091461, '230914_06_1イベント5倍チケット配布_11.40予備)'),
(10101, 'イベント1.5倍チケット_2', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10102, 'イベント2倍チケット_2', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10103, 'イベント3倍チケット_2', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10105, 'イベント5倍チケット_2', 0, 'Event', 1, '期限付き5倍チケット', 23091462, '230914_06_2イベント5倍チケット配布_21.40予備)'),
(10201, 'イベント1.5倍チケット_3', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10202, 'イベント2倍チケット_3', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10203, 'イベント3倍チケット_3', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10205, 'イベント5倍チケット_3', 0, 'Event', 1, '期限付き5倍チケット', 23032362, '230323_06_2イベント5倍チケット配布_3予備'),
(11001, '無料1.5倍チケット', 0, 'Free', 5, 'ちほー進行1.5倍チケット', 1, '無期限常時解放'),
(11002, '無料2倍チケット', 0, 'Free', 5, 'ちほー進行2倍チケット', 0, '解放なし'),
(11003, '無料3倍チケット', 0, 'Free', 5, 'ちほー進行3倍チケット', 0, '解放なし'),
(11005, '無料5倍チケット', 0, 'Free', 5, 'ちほー進行5倍チケット', 0, '解放なし'),
(20010, '無料10倍チケット', 0, 'Free', 99, 'ちほー進行10倍チケット', 0, '解放なし'),
(20020, '無料20倍チケット', 0, 'Free', 99, 'ちほー進行20倍チケット', 0, '解放なし');

View File

@ -0,0 +1,37 @@
CREATE TABLE `maimai2_game_ticket` (
`id` bigint(20) NOT NULL,
`name` varchar(255) NOT NULL,
`credits` int(8) NOT NULL,
`kind` varchar(255) NOT NULL,
`max` int(16) NOT NULL,
`detail` varchar(255) NOT NULL,
`event_id` bigint(20) NOT NULL,
`event_name` varchar(255) NOT NULL
);
INSERT INTO `maimai2_game_ticket` (`id`, `name`, `credits`, `kind`, `max`, `detail`, `event_id`, `event_name`) VALUES
(0, '使用しない', 0, 'None', 0, 'チケットを使用しません', 1, '無期限常時解放'),
(2, '2倍チケット', 1, 'Paid', 0, '2倍チケット', 1, '無期限常時解放'),
(3, '3倍チケット', 2, 'Paid', 0, '3倍チケット', 1, '無期限常時解放'),
(4, '4倍チケット', 3, 'Paid', 0, '4倍チケット', 0, '解放なし'),
(5, '5倍チケット', 4, 'Paid', 0, '5倍チケット', 24021661, '240216_06_1有料5倍チケット解放'),
(6, '6倍チケット', 5, 'Paid', 0, '6倍チケット', 0, '解放なし'),
(10001, 'イベント1.5倍チケット_1', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10002, 'イベント2倍チケット_1', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10003, 'イベント3倍チケット_1', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10005, 'イベント5倍チケット_1', 0, 'Event', 1, '期限付き5倍チケット', 23091461, '230914_06_1イベント5倍チケット配布_11.40予備)'),
(10101, 'イベント1.5倍チケット_2', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10102, 'イベント2倍チケット_2', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10103, 'イベント3倍チケット_2', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10105, 'イベント5倍チケット_2', 0, 'Event', 1, '期限付き5倍チケット', 23091462, '230914_06_2イベント5倍チケット配布_21.40予備)'),
(10201, 'イベント1.5倍チケット_3', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10202, 'イベント2倍チケット_3', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10203, 'イベント3倍チケット_3', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10205, 'イベント5倍チケット_3', 0, 'Event', 1, '期限付き5倍チケット', 23032362, '230323_06_2イベント5倍チケット配布_3予備'),
(11001, '無料1.5倍チケット', 0, 'Free', 5, 'ちほー進行1.5倍チケット', 1, '無期限常時解放'),
(11002, '無料2倍チケット', 0, 'Free', 5, 'ちほー進行2倍チケット', 0, '解放なし'),
(11003, '無料3倍チケット', 0, 'Free', 5, 'ちほー進行3倍チケット', 0, '解放なし'),
(11005, '無料5倍チケット', 0, 'Free', 5, 'ちほー進行5倍チケット', 0, '解放なし'),
(20010, '無料10倍チケット', 0, 'Free', 99, 'ちほー進行10倍チケット', 0, '解放なし'),
(20020, '無料20倍チケット', 0, 'Free', 99, 'ちほー進行20倍チケット', 0, '解放なし');

View File

@ -0,0 +1,45 @@
CREATE TABLE "maimai2_game_ticket" (
"id" INTEGER(20) NOT NULL,
"name" TEXT(255) NOT NULL,
"credits" INTEGER(8) NOT NULL,
"kind" TEXT(255) NOT NULL,
"max" INTEGER(16) NOT NULL,
"detail" TEXT(255) NOT NULL,
"event_id" INTEGER(20) NOT NULL,
"event_name" TEXT(255) NOT NULL
);
INSERT INTO "maimai2_game_ticket" (
"id",
"name",
"credits",
"kind",
"max",
"detail",
"event_id",
"event_name"
)
VALUES
(0, '使用しない', 0, 'None', 0, 'チケットを使用しません', 1, '無期限常時解放'),
(2, '2倍チケット', 1, 'Paid', 0, '2倍チケット', 1, '無期限常時解放'),
(3, '3倍チケット', 2, 'Paid', 0, '3倍チケット', 1, '無期限常時解放'),
(4, '4倍チケット', 3, 'Paid', 0, '4倍チケット', 0, '解放なし'),
(5, '5倍チケット', 4, 'Paid', 0, '5倍チケット', 24021661, '240216_06_1有料5倍チケット解放'),
(6, '6倍チケット', 5, 'Paid', 0, '6倍チケット', 0, '解放なし'),
(10001, 'イベント1.5倍チケット_1', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10002, 'イベント2倍チケット_1', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10003, 'イベント3倍チケット_1', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10005, 'イベント5倍チケット_1', 0, 'Event', 1, '期限付き5倍チケット', 23091461, '230914_06_1イベント5倍チケット配布_11.40予備)'),
(10101, 'イベント1.5倍チケット_2', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10102, 'イベント2倍チケット_2', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10103, 'イベント3倍チケット_2', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10105, 'イベント5倍チケット_2', 0, 'Event', 1, '期限付き5倍チケット', 23091462, '230914_06_2イベント5倍チケット配布_21.40予備)'),
(10201, 'イベント1.5倍チケット_3', 0, 'Event', 1, '期限付き1.5倍チケット', 0, '解放なし'),
(10202, 'イベント2倍チケット_3', 0, 'Event', 1, '期限付き2倍チケット', 0, '解放なし'),
(10203, 'イベント3倍チケット_3', 0, 'Event', 1, '期限付き3倍チケット', 0, '解放なし'),
(10205, 'イベント5倍チケット_3', 0, 'Event', 1, '期限付き5倍チケット', 23032362, '230323_06_2イベント5倍チケット配布_3予備'),
(11001, '無料1.5倍チケット', 0, 'Free', 5, 'ちほー進行1.5倍チケット', 1, '無期限常時解放'),
(11002, '無料2倍チケット', 0, 'Free', 5, 'ちほー進行2倍チケット', 0, '解放なし'),
(11003, '無料3倍チケット', 0, 'Free', 5, 'ちほー進行3倍チケット', 0, '解放なし'),
(11005, '無料5倍チケット', 0, 'Free', 5, 'ちほー進行5倍チケット', 0, '解放なし'),
(20010, '無料10倍チケット', 0, 'Free', 99, 'ちほー進行10倍チケット', 0, '解放なし'),
(20020, '無料20倍チケット', 0, 'Free', 99, 'ちほー進行20倍チケット', 0, '解放なし');

View File

@ -3,6 +3,7 @@ from pathlib import Path
from typing import NamedTuple
import pandas as pd
import sqlglot
import xmltodict
from hypy_utils import write
@ -56,20 +57,55 @@ def parse_event(d: dict) -> Event:
)
def add_migration(f_name: str, mysql: str):
(migration_path / 'mysql' / f_name).write_text(mysql)
(migration_path / 'mariadb' / f_name).write_text(mysql)
# Translate to sqlite
sqlite = sqlglot.transpile(mysql, read='mysql', write='sqlite', pretty=True)
(migration_path / 'sqlite' / f_name).write_text(';\n'.join(sqlite) + ';\n')
if __name__ == '__main__':
agupa = argparse.ArgumentParser(description='Convert maimai data to csv')
agupa.add_argument('path', type=Path, help='Path to A000 data folder')
args = agupa.parse_args()
path = Path(args.path)
src = Path(__file__).parent.parent
tickets = read_list('ticket', '*/Ticket.xml', parse_ticket)
events = read_list('event', '*/Event.xml', parse_event)
# Write incremental sql
ids = [int(v.split(",")[0]) for v in (Path(__file__).parent / 'maimai2_game_event.csv').read_text().splitlines()]
new_events = [e for e in events if e.id not in ids]
sql = "INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES \n" + \
",\n".join([f"({e.id}, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000', {e.type}, '1')" for e in new_events])
# ids = [int(v.split(",")[0]) for v in (Path(__file__).parent / 'maimai2_game_event.csv').read_text().splitlines()]
# new_events = [e for e in events if e.id not in ids]
# sql = "INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES \n" + \
# ",\n".join([f"({e.id}, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000', {e.type}, '1')" for e in new_events])
# sql += ";\n"
# write('sql/maimai2_game_event.sql', sql)
# Find the highest V{}__*.sql file in src/main/resources/db/migration/sqlite
migration_path = src / 'src/main/resources/db/migration'
last_sql_version = max([int(v.name[1:].split("__")[0]) for v in (migration_path / 'sqlite').glob('V*__*.sql')])
last_sql_version = 248
print(f"Last sql version: {last_sql_version}")
# Write ticket sql
sql = """
CREATE TABLE `maimai2_game_ticket` (
`id` bigint(20) NOT NULL,
`name` varchar(255) NOT NULL,
`credits` int(8) NOT NULL,
`kind` varchar(255) NOT NULL,
`max` int(16) NOT NULL,
`detail` varchar(255) NOT NULL,
`event_id` bigint(20) NOT NULL,
`event_name` varchar(255) NOT NULL
);\n\n"""
sql += "INSERT INTO `maimai2_game_ticket` (`id`, `name`, `credits`, `kind`, `max`, `detail`, `event_id`, `event_name`) VALUES \n" + \
",\n".join([f"({t.id}, '{t.name}', {t.credits}, '{t.kind}', {t.max}, '{t.detail}', {t.eventId}, '{t.eventName}')" for t in tickets])
sql += ";\n"
write('sql/maimai2_game_event.sql', sql)
add_migration(f"V{last_sql_version + 1}__maimai2_tickets.sql", sql)