From d55ada2538b4edac06d5655f6e98d3966a8d3e44 Mon Sep 17 00:00:00 2001 From: Dniel97 Date: Sun, 8 Oct 2023 19:56:04 +0200 Subject: [PATCH] IDAC: Improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixed play stamp event name not shown - Fixed broken cars such as: LEVIN SR (AE85), SKYLINE 25GT TURBO (ER34), S2000 (AP1), GR SUPRA (DB42), SWIFT Sport (ZC33S), LANCER RS EVOLUTION Ⅴ (CP9A), LANCER GSR EVOLUTION Ⅵ TMEDITION (CP9A) - Fixed bunta/special mode not properly updating - Fixed frontend (for real this time) --- titles/idac/data/create_delivery_images.py | 8 ++- .../data/stamps/touhou_flandre_scarlet.json | 2 +- .../data/stamps/touhou_remilia_scarlet.json | 2 +- .../data/stamps/touhou_sakuya_izayoi.json | 2 +- titles/idac/data/timeRelease_v0150.json | 69 +++++++++++++++---- titles/idac/frontend/idac_index.jinja | 8 ++- titles/idac/schema/item.py | 27 ++++++-- titles/idac/season2.py | 4 +- 8 files changed, 92 insertions(+), 30 deletions(-) diff --git a/titles/idac/data/create_delivery_images.py b/titles/idac/data/create_delivery_images.py index 196081e..ac37925 100644 --- a/titles/idac/data/create_delivery_images.py +++ b/titles/idac/data/create_delivery_images.py @@ -2,12 +2,13 @@ import os import hashlib -def prepare_images(image_folder="./images"): +def prepare_images(image_folder="titles/idac/data/images"): print(f"Preparing image delivery files in {image_folder}...") for file in os.listdir(image_folder): if file.endswith(".png") or file.endswith(".jpg"): - dpg_name = "adv-" + file[:-4].upper() + # dpg_name = "adv-" + file[:-4].upper() + dpg_name = file[:-4] if file.endswith(".png"): dpg_name += ".dpg" else: @@ -22,10 +23,11 @@ def prepare_images(image_folder="./images"): original_image = original_image_file.read() image_hash = hashlib.md5(original_image).hexdigest() print( - f"DPG for {file} not found, creating with hash {image_hash}..." + f"DPG for {file} not found, creating with hash {image_hash.upper()} ..." ) md5_buf = bytes.fromhex(image_hash) dpg_buf = md5_buf + original_image + dpg_name = "adv-" + image_hash.upper() + dpg_name[:-4] with open(os.path.join(image_folder, dpg_name), "wb") as dpg_file: dpg_file.write(dpg_buf) diff --git a/titles/idac/data/stamps/touhou_flandre_scarlet.json b/titles/idac/data/stamps/touhou_flandre_scarlet.json index 23d2a7d..da642f6 100644 --- a/titles/idac/data/stamps/touhou_flandre_scarlet.json +++ b/titles/idac/data/stamps/touhou_flandre_scarlet.json @@ -1,6 +1,6 @@ { "m_stamp_event_id": 25, - "stamp_event_nm": "*フランドール・スカーレットスタンプ", + "stamp_event_nm": "フランドール・スカーレットスタンプ", "url": "https://info-initialdac.sega.jp/2290/", "start_dt": "2023-10-01", "end_dt": "2029-01-01", diff --git a/titles/idac/data/stamps/touhou_remilia_scarlet.json b/titles/idac/data/stamps/touhou_remilia_scarlet.json index 3d917a9..a6fe329 100644 --- a/titles/idac/data/stamps/touhou_remilia_scarlet.json +++ b/titles/idac/data/stamps/touhou_remilia_scarlet.json @@ -1,6 +1,6 @@ { "m_stamp_event_id": 24, - "stamp_event_nm": "*レミリア・スカーレットスタンプ", + "stamp_event_nm": "レミリア・スカーレットスタンプ", "url": "https://info-initialdac.sega.jp/2096/", "start_dt": "2023-10-01", "end_dt": "2029-01-01", diff --git a/titles/idac/data/stamps/touhou_sakuya_izayoi.json b/titles/idac/data/stamps/touhou_sakuya_izayoi.json index 7b98fb3..05d1e28 100644 --- a/titles/idac/data/stamps/touhou_sakuya_izayoi.json +++ b/titles/idac/data/stamps/touhou_sakuya_izayoi.json @@ -1,6 +1,6 @@ { "m_stamp_event_id": 26, - "stamp_event_nm": "*十六夜咲夜スタンプ", + "stamp_event_nm": "十六夜咲夜スタンプ", "url": "https://info-initialdac.sega.jp/2306/", "start_dt": "2023-10-01", "end_dt": "2029-01-01", diff --git a/titles/idac/data/timeRelease_v0150.json b/titles/idac/data/timeRelease_v0150.json index 02d6bf3..694c819 100644 --- a/titles/idac/data/timeRelease_v0150.json +++ b/titles/idac/data/timeRelease_v0150.json @@ -38,6 +38,12 @@ "recommend": 0, "new_status": 0 }, + { + "style_car_id": 12, + "release_status": 1, + "recommend": 0, + "new_status": 0 + }, { "style_car_id": 259, "release_status": 1, @@ -50,6 +56,12 @@ "recommend": 0, "new_status": 0 }, + { + "style_car_id": 264, + "release_status": 1, + "recommend": 0, + "new_status": 0 + }, { "style_car_id": 265, "release_status": 1, @@ -116,18 +128,6 @@ "recommend": 0, "new_status": 0 }, - { - "style_car_id": 1285, - "release_status": 1, - "recommend": 0, - "new_status": 1 - }, - { - "style_car_id": 1286, - "release_status": 1, - "recommend": 0, - "new_status": 1 - }, { "style_car_id": 1536, "release_status": 1, @@ -152,6 +152,12 @@ "recommend": 0, "new_status": 0 }, + { + "style_car_id": 65538, + "release_status": 1, + "recommend": 0, + "new_status": 0 + }, { "style_car_id": 65539, "release_status": 1, @@ -224,6 +230,12 @@ "recommend": 1, "new_status": 0 }, + { + "style_car_id": 66051, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, { "style_car_id": 66304, "release_status": 1, @@ -266,6 +278,24 @@ "recommend": 0, "new_status": 0 }, + { + "style_car_id": 66821, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, + { + "style_car_id": 66822, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, + { + "style_car_id": 67073, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, { "style_car_id": 67328, "release_status": 1, @@ -422,6 +452,18 @@ "recommend": 0, "new_status": 0 }, + { + "style_car_id": 132358, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, + { + "style_car_id": 132608, + "release_status": 1, + "recommend": 0, + "new_status": 1 + }, { "style_car_id": 132864, "release_status": 1, @@ -779,8 +821,7 @@ "timerelease_chapter": 28 } ], - "annaunce_image": [ - ], + "annaunce_image": [], "vs_balance_car": [ { "style_car_id": 0, diff --git a/titles/idac/frontend/idac_index.jinja b/titles/idac/frontend/idac_index.jinja index 4bd10ca..eeecc65 100644 --- a/titles/idac/frontend/idac_index.jinja +++ b/titles/idac/frontend/idac_index.jinja @@ -2,7 +2,7 @@ {% block content %}

頭文字D THE ARCADE

-{% if sesh is defined and sesh["user_id"] > 0 %} +{% if sesh is defined and sesh["userId"] > 0 %}
@@ -27,6 +27,8 @@
Username

{{ profile.username }}

+
Cash
+

{{ profile.cash }} D

Grade

{% set grade = rank.grade %} @@ -37,7 +39,7 @@ {% else %} Unknown {% endif %} -

+
@@ -58,7 +60,7 @@
Mileage
-

{{ profile.mileage }} m

+

{{ profile.mileage / 1000}} km

{% if tickets is defined and tickets|length > 0 %} diff --git a/titles/idac/schema/item.py b/titles/idac/schema/item.py index ae49c74..e16bfa3 100644 --- a/titles/idac/schema/item.py +++ b/titles/idac/schema/item.py @@ -619,19 +619,36 @@ class IDACItemData(BaseData): def get_best_challenges_by_vs_type( self, aime_id: int, story_type: int = 4 ) -> Optional[List[Row]]: - sql = ( + subquery = ( select( challenge.c.story_type, + challenge.c.user, challenge.c.vs_type, - func.max(challenge.c.cleared_difficulty).label("max_clear_lv"), func.max(challenge.c.play_difficulty).label("last_play_lv"), - challenge.c.course_id, - challenge.c.play_count, ) .where( and_(challenge.c.user == aime_id, challenge.c.story_type == story_type) ) - .group_by(challenge.c.vs_type, challenge.c.course_id, challenge.c.play_count) + .group_by(challenge.c.vs_type) + ) + + sql = ( + select( + challenge.c.story_type, + challenge.c.vs_type, + challenge.c.cleared_difficulty.label("max_clear_lv"), + challenge.c.play_difficulty.label("last_play_lv"), + challenge.c.course_id, + challenge.c.play_count, + ) + .where( + and_( + challenge.c.user == subquery.c.user, + challenge.c.vs_type == subquery.c.vs_type, + challenge.c.play_difficulty == subquery.c.last_play_lv, + ), + ) + .order_by(challenge.c.vs_type) ) result = self.execute(sql) diff --git a/titles/idac/season2.py b/titles/idac/season2.py index 5717978..6ce6b37 100644 --- a/titles/idac/season2.py +++ b/titles/idac/season2.py @@ -146,9 +146,9 @@ class IDACSeason2(IDACBase): "round_event_exp": [], "stamp_info": self.stamp_info, # 0 = use default data, 1+ = server version of timereleasedata response - "timerelease_no": 1, + "timerelease_no": 2, # 0 = use default data, 1+ = server version of gachadata response - "timerelease_avatar_gacha_no": 1, + "timerelease_avatar_gacha_no": 2, "takeover_reward": [], "subcard_judge": [ {