Compare commits

..

3 Commits

Author SHA1 Message Date
katboi01 2b121be258 Added archive module 2024-12-26 15:54:55 +01:00
katboi01 eefb47476a fix 2024-12-26 15:27:03 +01:00
Katboi01 bfb19ab7c1 checkpoint 2024-07-08 12:54:18 +02:00
10 changed files with 116 additions and 21 deletions

2
app.py
View File

@ -3,6 +3,7 @@ from flask_restful import Api
from modules.KF3.database import Database as KF3DB
from modules.Kingdom.database import Database as KFKDB
from modules.Archive.database import Database as KFADB
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@ -12,6 +13,7 @@ api = Api(app)
KF3DB(api)
KFKDB(api)
KFADB(api)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)

View File

@ -0,0 +1,22 @@
import json
from .databaseController import DatabaseController
from .endpoints.query import Archive_Query
class Database:
db : DatabaseController = None
processed_friends = {}
item_stages = {}
def __init__(self, api) -> None:
app = api.app
if "Archive" in app.databases:
del app.databases["Archive"]
self.reload_data()
app.databases["Archive"] = self
api.add_resource(Archive_Query, "/Archive/Query")
def reload_data(self):
self.db = DatabaseController("/home/pi/python/Katbots/JapariArchive/database.db")

View File

@ -0,0 +1,21 @@
import os
import sqlite3
TABLE_ACCOUNTS = "accounts"
TABLE_X = "x_posts"
class DatabaseController:
def __init__(self, db_name):
self.conn = sqlite3.connect(db_name, isolation_level="DEFERRED")
self.cursor = self.conn.cursor()
def run_query(self, query):
try:
self.cursor.execute(query)
results = self.cursor.fetchall()
return results
except:
return None
def close(self):
self.conn.close()

View File

@ -0,0 +1,21 @@
import json
from flask_restful import Resource
from flask import current_app as app, jsonify
class Archive_Query(Resource):
def post(self, query:str):
db = app.databases["Archive"]
result = db.run_query(query)
if result is None:
response = app.response_class(status=400)
else:
response = app.response_class(
response=json.dumps(result, ensure_ascii=False, indent=1),
status=200,
mimetype='application/json'
)
response.headers.add("Access-Control-Allow-Origin", "*")
return response

View File

@ -123,7 +123,7 @@ class Database:
chara = {}
charaData = self.charaData[id]
alphaBase = self.paramAlphaBases[id]
alphaBase = self.paramAlphaBases[id] if id in self.paramAlphaBases else None
wrLocked = False
promoIds = []
@ -136,7 +136,8 @@ class Database:
else:
promoIds.append([promo["promoteId00"], promo["promoteId01"], promo["promoteId02"], promo["promoteId03"], promo["promoteId04"], promo["promoteId05"]])
promoteDatas = [[self.promoteData[id] for id in promo] for promo in promoIds]
emptyPromote = {"promoteAtk": 0, "promoteDef": 0, "promoteHp": 0, "promoteAvoid": 0, "promoteActionDamageRatio": 0, "promoteBeatDamageRatio": 0, "promoteTryDamageRatio": 0}
promoteDatas = [[(self.promoteData[id] if id in self.promoteData else emptyPromote) for id in promo] for promo in promoIds]
promote_bonus = {"atk" : 0, "def" : 0, "hp" : 0, "evd" : 0, "beat" : 0, "act" : 0, "try" : 0}
for promoTier in promoteDatas:
for promoteStep in promoTier:
@ -189,16 +190,23 @@ class Database:
else:
level_curve = self.limitlevel_rising_status[patternId] if patternId != 0 else None
chara["stats_min"] = get_all_stats(chara, alphaBase, max_level = False, rising_status_pattern=level_curve)
chara["stats_max"] = get_all_stats(chara, alphaBase, max_level = True, rising_status_pattern=level_curve)
chara["plasmPoint"] = alphaBase["plasmPoint"]
chara["cards"] = [
{"type":alphaBase["orderCardType00"], "value":alphaBase["orderCardValue00"]},
{"type":alphaBase["orderCardType01"], "value":alphaBase["orderCardValue01"]},
{"type":alphaBase["orderCardType02"], "value":alphaBase["orderCardValue02"]},
{"type":alphaBase["orderCardType03"], "value":alphaBase["orderCardValue03"]},
{"type":alphaBase["orderCardType04"], "value":alphaBase["orderCardValue04"]}
]
if alphaBase is None:
chara["stats_min"] = {"level" : 0,"status" : 0,"wr" : 0,"hp" : 0,"atk" : 0,"def" : 0,"evd" : 0,"beat" : 0,"act" : 0,"try" : 0}
chara["stats_max"] = {"level" : 0,"status" : 0,"wr" : 0,"hp" : 0,"atk" : 0,"def" : 0,"evd" : 0,"beat" : 0,"act" : 0,"try" : 0}
chara["plasmPoint"] = 0
chara["cards"] = {0,0,0,0,0}
else:
chara["stats_min"] = get_all_stats(chara, alphaBase, max_level = False, rising_status_pattern=level_curve)
chara["stats_max"] = get_all_stats(chara, alphaBase, max_level = True, rising_status_pattern=level_curve)
chara["plasmPoint"] = alphaBase["plasmPoint"]
chara["cards"] = [
{"type":alphaBase["orderCardType00"], "value":alphaBase["orderCardValue00"]},
{"type":alphaBase["orderCardType01"], "value":alphaBase["orderCardValue01"]},
{"type":alphaBase["orderCardType02"], "value":alphaBase["orderCardValue02"]},
{"type":alphaBase["orderCardType03"], "value":alphaBase["orderCardValue03"]},
{"type":alphaBase["orderCardType04"], "value":alphaBase["orderCardValue04"]}
]
chara["synergy_flag"] = self.paramArts[id]["authParam"]["SynergyFlag"] if id in self.paramArts else 0
chara["arts"] = self.paramArts[id] if id in self.paramArts else None

View File

@ -112,7 +112,7 @@ async def download_files(server_name, asset_bundle_url, srv_platform : str):
convert_path = f"/var/www/html/Katworks/KF/assets/KF3/WebGL/assets/" + file_name
extract_path = f"/var/www/html/Katworks/KF/assets/KF3/extracted/"
try:
convert(data, convert_path, enums.BuildTarget.WebGL, True)
convert(data, convert_path, enums.BuildTarget.WebGL)
except:
with open(convert_path, "wb") as file:
file.write(data)
@ -173,6 +173,26 @@ async def download_files(server_name, asset_bundle_url, srv_platform : str):
await session.close()
return files_to_download
async def convert_files():
directory = f"/var/www/html/Katworks/KF/assets/KF3/develop01/assets/Windows/"
with open("/var/www/html/Katworks/KF/assets/KF3/lastUpdate_dev_files.json", "rt", encoding="utf-8") as file:
files_to_convert = json.load(file)
for file_name in os.listdir(directory):
if file_name not in files_to_convert:
continue
f = os.path.join(directory, file_name)
if not os.path.isfile(f):
return
convert_path = f"/var/www/html/Katworks/KF/assets/KF3/WebGL/assets/" + file_name
try:
print(f)
convert(f, convert_path, enums.BuildTarget.WebGL)
except:
print("Conversion failed", f)
async def manual():
downloaded_cache = {}
downloaded_files = {}
@ -210,4 +230,5 @@ async def manual():
json.dump(downloaded_files, file, ensure_ascii=False, indent=1)
if __name__ == "__main__":
asyncio.run(manual())
asyncio.run(manual())
#asyncio.run(convert_files())

View File

@ -5,9 +5,9 @@ import json
class KF3_Friend(Resource):
def get(self, id:int):
from KF3.database import Database
from ..database import Database
db : Database = app.databases["KF3"]
if "wiki" in request.args:
result = db.get_chara_wiki(id)

View File

@ -5,9 +5,9 @@ from flask import request
class KF3_Friends(Resource):
def get(self):
from KF3.database import Database
from ..database import Database
db : Database = app.databases["KF3"]
result = []
for value in db.processed_friends.values():
result.append({"id": value["id"], "name": value["nameEn"], "startTime" : value["startTime"], "startTimeRaw" : value["startTimeRaw"]})

View File

@ -5,7 +5,7 @@ import json
class KF3_Item(Resource):
def get(self, id:int):
from KF3.database import Database
from ..database import Database
db : Database = app.databases["KF3"]
result = db.get_item(id)

View File

@ -4,12 +4,12 @@ from flask import current_app as app
class KF3_Items(Resource):
def get(self):
from KF3.database import Database
from ..database import Database
db : Database = app.databases["KF3"]
result = []
for value in db.itemCommon.values():
result.append({"id": value["id"], "name": value["name"]})
result.append({"id": value["id"], "name": value["name"], "iconName" : value["iconName"], "flavorText" : value["flavorText"]})
response = app.response_class(
response=json.dumps(result, ensure_ascii=False, indent=1),