diff --git a/.gitignore b/.gitignore index fcfa2ed..a95d567 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ db/ log/ - +assets/archives/ diff --git a/data/assets_list.json b/assets/assets_list.json similarity index 100% rename from data/assets_list.json rename to assets/assets_list.json diff --git a/data/masterdata/live.db b/assets/masterdata/live.db similarity index 100% rename from data/masterdata/live.db rename to assets/masterdata/live.db diff --git a/main.py b/main.py index dde9bf9..7fdef35 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ app.blueprint(bp_sif) app.config["PUBKEY_PATH"] = "./publickey.pem" app.config["PRIVKEY_PATH"] = "./privatekey.pem" -app.config["ASSETS_LIST_PATH"] = "./data/assets_list.json" +app.config["ASSETS_LIST_PATH"] = "./assets/assets_list.json" app.config["ASSETS_PATH_ANDROID"] = "E:/20240802_sif/honoka-chan/static/Android/archives" app.config["ASSETS_PATH_IOS"] = "" app.config["STATIC_ROOT"] = "http://localsif:8080" diff --git a/sif/__init__.py b/sif/__init__.py index bff6a08..bb88660 100644 --- a/sif/__init__.py +++ b/sif/__init__.py @@ -1,19 +1,26 @@ from sanic import Blueprint -from .api import bp_sif_api -from .login import bp_sif_login -from .user import bp_sif_user -from .misc import bp_sif_misc -from .download import bp_sif_download -from .live import bp_sif_live -from .unit import bp_sif_unit +from .api import bp_sif_api -bp_sif = Blueprint.group(bp_sif_login, - bp_sif_user, - bp_sif_misc, +from .modules.album import bp_sif_album +from .modules.costume import bp_sif_costume +from .modules.download import bp_sif_download +from .modules.live import bp_sif_live +from .modules.login import bp_sif_login +from .modules.misc import bp_sif_misc +from .modules.scenario import bp_sif_scenario +from .modules.unit import bp_sif_unit +from .modules.user import bp_sif_user + +bp_sif = Blueprint.group(bp_sif_api, + bp_sif_album, + bp_sif_costume, bp_sif_download, - bp_sif_api, bp_sif_live, + bp_sif_login, + bp_sif_misc, + bp_sif_scenario, bp_sif_unit, + bp_sif_user, url_prefix="main.php") diff --git a/sif/api.py b/sif/api.py index d5eb17d..e188eb9 100644 --- a/sif/api.py +++ b/sif/api.py @@ -29,8 +29,8 @@ async def api(request: Request): result = await handler.__wrapped__(request) logger.debug(f"api:main.php/{module}/{action} {result=}") else: - logger.error(f"api:main.php/{module}/{action} not found") result = {} + logger.error(f"api:main.php/{module}/{action} not found") api_resp.append({ "commandNum": False, "result": result, diff --git a/sif/modules/album.py b/sif/modules/album.py new file mode 100644 index 0000000..2dc973d --- /dev/null +++ b/sif/modules/album.py @@ -0,0 +1,32 @@ +from sanic import Blueprint, Request + +import time + +from ..common import common_api + + + +bp_sif_album = Blueprint("sif_album", url_prefix="album") + + + +@bp_sif_album.route("albumAll", methods=["POST"]) +@common_api +async def albumAll(request: Request): + + ### TODO - PLACEHOLDER ### + + resp = [] + for i in range(9): + resp.append({ + "unit_id": i + 1, + "rank_max_flag": True, + "love_max_flag": True, + "rank_level_max_flag": True, + "all_max_flag": True, + "highest_love_per_unit": 50, + "total_love": 50, + "favorite_point": 1000, + "sign_flag": False + }) + return resp \ No newline at end of file diff --git a/sif/modules/costume.py b/sif/modules/costume.py new file mode 100644 index 0000000..a8b241d --- /dev/null +++ b/sif/modules/costume.py @@ -0,0 +1,20 @@ +from sanic import Blueprint, Request + +import time + +from ..common import common_api + + + +bp_sif_costume = Blueprint("sif_costume", url_prefix="costume") + + + +@bp_sif_costume.route("costumeList", methods=["POST"]) +@common_api +async def costumeList(request: Request): + + ### TODO - PLACEHOLDER ### + + resp = { "costume_list": [] } + return resp \ No newline at end of file diff --git a/sif/download.py b/sif/modules/download.py similarity index 98% rename from sif/download.py rename to sif/modules/download.py index 16f1cf6..884da90 100644 --- a/sif/download.py +++ b/sif/modules/download.py @@ -1,7 +1,7 @@ from sanic import Sanic, Blueprint, Request from sanic.log import logger -from .common import common_api +from ..common import common_api diff --git a/sif/live.py b/sif/modules/live.py similarity index 98% rename from sif/live.py rename to sif/modules/live.py index c3a6248..69578ee 100644 --- a/sif/live.py +++ b/sif/modules/live.py @@ -2,7 +2,7 @@ from sanic import Blueprint, Request import time -from .common import common_api +from ..common import common_api from utils.masterdata import get_masterdata diff --git a/sif/login.py b/sif/modules/login.py similarity index 98% rename from sif/login.py rename to sif/modules/login.py index 938c9b3..563d7b5 100644 --- a/sif/login.py +++ b/sif/modules/login.py @@ -9,7 +9,7 @@ from utils.crypto import base64_decode, base64_encode, xor from utils.crypto import rsa_decrypt, get_rsa_privkey from utils.crypto import aes_cbc_decrypt from sdo.model import SdoUser -from .common import parse_data, pack_resp +from ..common import parse_data, pack_resp diff --git a/sif/misc.py b/sif/modules/misc.py similarity index 98% rename from sif/misc.py rename to sif/modules/misc.py index f2ee932..52e3bf7 100644 --- a/sif/misc.py +++ b/sif/modules/misc.py @@ -2,7 +2,7 @@ from sanic import Blueprint, Request import time -from .common import common_api +from ..common import common_api diff --git a/sif/modules/scenario.py b/sif/modules/scenario.py new file mode 100644 index 0000000..6e62212 --- /dev/null +++ b/sif/modules/scenario.py @@ -0,0 +1,51 @@ +from sanic import Blueprint, Request + +import time + +from ..common import common_api + + + +bp_sif_scenario = Blueprint("sif_scenario") # , url_prefix="scenario") + + + +@bp_sif_scenario.route("/scenario/scenarioStatus", methods=["POST"]) +@common_api +async def scenario_scenarioStatus(request: Request): + # scenario_id_list = [t[0] for t in get_masterdata("scenario.db", "scenario_m", ["scenario_id"])] + scenario_id_list = list(range(1, 333)) + list(range(3000, 3102)) + list(range(4000, 4018)) + for i in [3046,3049,3065,3066,3067,3068,3069]: scenario_id_list.remove(i) + resp = { + "scenario_status_list": [] + } + for i in scenario_id_list: + resp["scenario_status_list"].append({ + "scenario_id": i, + "status": 2 + }) + + return resp + + + +@bp_sif_scenario.route("/subscenario/subscenarioStatus", methods=["POST"]) +@common_api +async def subscenario_subscenarioStatus(request: Request): + # subscenario_id_list = [t[0] for t in get_masterdata("scenario.db", "subscenario_m", ["subscenario_id"])] # not found + subscenario_id_list = list(range(1, 3384)) + for i in [67,69,70,143,572,573,2563,2564,2565,2575,2594,2617,2634,2635,2638,2808,2838, + 2839,2992,2993,3176,3213,3214,3215,3216,3217,3218,3224,3225,3226,3347]: + subscenario_id_list.remove(i) + subscenario_id_list += [90001,90002,90003,90004,90005] + resp = { + "subscenario_status_list": [], + "unlocked_subscenario_ids": [] + } + for i in subscenario_id_list: + resp["subscenario_status_list"].append({ + "subscenario_id": i, + "status": 2 + }) + + return resp \ No newline at end of file diff --git a/sif/unit.py b/sif/modules/unit.py similarity index 67% rename from sif/unit.py rename to sif/modules/unit.py index 6368af7..4a57bda 100644 --- a/sif/unit.py +++ b/sif/modules/unit.py @@ -2,7 +2,7 @@ from sanic import Blueprint, Request import time -from .common import common_api +from ..common import common_api @@ -88,4 +88,50 @@ async def supporterAll(request: Request): ### TODO - PLACEHOLDER ### resp = { "unit_support_list": [] } - return resp \ No newline at end of file + return resp + + + +@bp_sif_unit.route("removableSkillInfo", methods=["POST"]) +@common_api +async def removableSkillInfo(request: Request): + + ### TODO - PLACEHOLDER ### + + resp = { + "owning_info": [ + { + "unit_removable_skill_id": 1, + "total_amount": 9, + "equipped_amount": 0, + "insert_date": "2023-01-01 12:00:00" + } + ], + "equipment_info": {} + } + return resp + + + +@bp_sif_unit.route("accessoryAll", methods=["POST"]) +@common_api +async def accessoryAll(request: Request): + + ### TODO - PLACEHOLDER ### + + resp = { + "accessory_list": [ + { + "accessory_owning_user_id": 1, + "accessory_id": 1, + "exp": 9800, + "next_exp": 0, + "level": 8, + "max_level": 8, + "rank_up_count": 4, + "favorite_flag": True + } + ], + "wearing_info": [], + "especial_create_flag": False + } \ No newline at end of file diff --git a/sif/user.py b/sif/modules/user.py similarity index 96% rename from sif/user.py rename to sif/modules/user.py index 6dc5c42..64869d0 100644 --- a/sif/user.py +++ b/sif/modules/user.py @@ -2,7 +2,7 @@ from sanic import Blueprint, Request import time -from .common import common_api +from ..common import common_api diff --git a/utils/assets.py b/utils/assets.py index bfd95c8..e7cfd3a 100644 --- a/utils/assets.py +++ b/utils/assets.py @@ -43,8 +43,9 @@ def load_assets(): ios_i += 1 logger.info(f"Loaded {ios_i} iOS packages from {config['ASSETS_PATH_IOS']}") - if not os.path.exists("data"): os.makedirs("data") - with open("data/assets_list.json", "w") as f: + dirname = os.path.dirname(config["ASSETS_LIST_PATH"]) + if not os.path.exists(dirname): os.makedirs(dirname) + with open(config["ASSETS_LIST_PATH"], "w") as f: json.dump(assets_list, f) Sanic.get_app().ctx.assets_list = assets_list diff --git a/utils/masterdata.py b/utils/masterdata.py index cf7adc3..414fced 100644 --- a/utils/masterdata.py +++ b/utils/masterdata.py @@ -1,7 +1,7 @@ import sqlite3 def get_masterdata(db: str, table: str, columns: list[str]) -> list[tuple]: - con = sqlite3.connect(f"./data/masterdata/{db}") + con = sqlite3.connect(f"./assets/masterdata/{db}") cur = con.cursor() query = f"select {','.join(columns)} from {table}" res = cur.execute(query).fetchall()