Skip to content

Commit

Permalink
[+] maimai DX Tickets
Browse files Browse the repository at this point in the history
  • Loading branch information
hykilpikonna committed Feb 6, 2024
1 parent 2a800a8 commit 363c9ff
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 5 deletions.
37 changes: 37 additions & 0 deletions src/main/resources/db/migration/mariadb/V249__maimai2_tickets.sql
Original file line number Diff line number Diff line change
@@ -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倍チケット配布_1(1.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倍チケット配布_2(1.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, '解放なし');
37 changes: 37 additions & 0 deletions src/main/resources/db/migration/mysql/V249__maimai2_tickets.sql
Original file line number Diff line number Diff line change
@@ -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倍チケット配布_1(1.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倍チケット配布_2(1.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, '解放なし');
45 changes: 45 additions & 0 deletions src/main/resources/db/migration/sqlite/V249__maimai2_tickets.sql
Original file line number Diff line number Diff line change
@@ -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倍チケット配布_1(1.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倍チケット配布_2(1.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, '解放なし');
46 changes: 41 additions & 5 deletions tools/maimai_convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from typing import NamedTuple

import pandas as pd
import sqlglot
import xmltodict
from hypy_utils import write

Expand Down Expand Up @@ -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)


0 comments on commit 363c9ff

Please sign in to comment.