implement more api

master
wlt233 6 months ago
parent eea9e7cb88
commit 825e2293b9

2
.gitignore vendored

@ -1,7 +1,7 @@
db/
log/
assets/archives/

@ -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"

@ -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")

@ -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,

@ -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

@ -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

@ -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

@ -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

@ -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

@ -2,7 +2,7 @@ from sanic import Blueprint, Request
import time
from .common import common_api
from ..common import common_api

@ -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

@ -2,7 +2,7 @@ from sanic import Blueprint, Request
import time
from .common import common_api
from ..common import common_api
@ -89,3 +89,49 @@ async def supporterAll(request: Request):
resp = { "unit_support_list": [] }
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
}

@ -2,7 +2,7 @@ from sanic import Blueprint, Request
import time
from .common import common_api
from ..common import common_api

@ -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

@ -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()

Loading…
Cancel
Save