You've already forked KemoFureApi
							
							Compare commits
	
		
			5 Commits
		
	
	
		
			testBranch
			...
			26a98b53d7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 26a98b53d7 | |||
| a36e6940d9 | |||
| 0ce68c606f | |||
| 2b121be258 | |||
| eefb47476a | 
							
								
								
									
										2
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								app.py
									
									
									
									
									
								
							| @@ -3,6 +3,7 @@ from flask_restful import Api | |||||||
|  |  | ||||||
| from modules.KF3.database import Database as KF3DB | from modules.KF3.database import Database as KF3DB | ||||||
| from modules.Kingdom.database import Database as KFKDB | from modules.Kingdom.database import Database as KFKDB | ||||||
|  | from modules.Archive.database import Database as KFADB | ||||||
|  |  | ||||||
| app = Flask(__name__) | app = Flask(__name__) | ||||||
| app.config['JSON_AS_ASCII'] = False | app.config['JSON_AS_ASCII'] = False | ||||||
| @@ -12,6 +13,7 @@ api = Api(app) | |||||||
|  |  | ||||||
| KF3DB(api) | KF3DB(api) | ||||||
| KFKDB(api) | KFKDB(api) | ||||||
|  | KFADB(api) | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     app.run(host='127.0.0.1', port=8080, debug=True) |     app.run(host='127.0.0.1', port=8080, debug=True) | ||||||
							
								
								
									
										22
									
								
								modules/Archive/database.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/Archive/database.py
									
									
									
									
									
										Normal 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") | ||||||
							
								
								
									
										21
									
								
								modules/Archive/databaseController.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/Archive/databaseController.py
									
									
									
									
									
										Normal 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() | ||||||
							
								
								
									
										21
									
								
								modules/Archive/endpoints/query.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/Archive/endpoints/query.py
									
									
									
									
									
										Normal 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    | ||||||
| @@ -123,7 +123,7 @@ class Database: | |||||||
|         chara = {} |         chara = {} | ||||||
|          |          | ||||||
|         charaData = self.charaData[id] |         charaData = self.charaData[id] | ||||||
|         alphaBase = self.paramAlphaBases[id] |         alphaBase = self.paramAlphaBases[id] if id in self.paramAlphaBases else None | ||||||
|  |  | ||||||
|         wrLocked = False |         wrLocked = False | ||||||
|         promoIds = [] |         promoIds = [] | ||||||
| @@ -190,16 +190,23 @@ class Database: | |||||||
|         else: |         else: | ||||||
|             level_curve = self.limitlevel_rising_status[patternId] if patternId != 0 else None |             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) |         if alphaBase is None: | ||||||
|         chara["stats_max"] = get_all_stats(chara, alphaBase, max_level = True, rising_status_pattern=level_curve) |             chara["stats_min"] = {"level" : 0,"status" : 0,"wr" : 0,"hp" : 0,"atk" : 0,"def" : 0,"evd" : 0,"beat" : 0,"act" : 0,"try" : 0} | ||||||
|         chara["plasmPoint"] = alphaBase["plasmPoint"] |             chara["stats_max"] = {"level" : 0,"status" : 0,"wr" : 0,"hp" : 0,"atk" : 0,"def" : 0,"evd" : 0,"beat" : 0,"act" : 0,"try" : 0} | ||||||
|         chara["cards"] = [ |             chara["plasmPoint"] = 0 | ||||||
|             {"type":alphaBase["orderCardType00"], "value":alphaBase["orderCardValue00"]}, |             chara["cards"] = {0,0,0,0,0} | ||||||
|             {"type":alphaBase["orderCardType01"], "value":alphaBase["orderCardValue01"]}, |         else: | ||||||
|             {"type":alphaBase["orderCardType02"], "value":alphaBase["orderCardValue02"]}, |             chara["stats_min"] = get_all_stats(chara, alphaBase, max_level = False, rising_status_pattern=level_curve) | ||||||
|             {"type":alphaBase["orderCardType03"], "value":alphaBase["orderCardValue03"]}, |             chara["stats_max"] = get_all_stats(chara, alphaBase, max_level = True, rising_status_pattern=level_curve) | ||||||
|             {"type":alphaBase["orderCardType04"], "value":alphaBase["orderCardValue04"]} |             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["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 |         chara["arts"] = self.paramArts[id] if id in self.paramArts else None | ||||||
|   | |||||||
| @@ -82,7 +82,10 @@ async def download_cache(server_name, server : str): | |||||||
|             file.write(data) |             file.write(data) | ||||||
|         with open(file_path_json, "wt", encoding="utf-8") as out_file: |         with open(file_path_json, "wt", encoding="utf-8") as out_file: | ||||||
|             data = gzip.decompress(data) |             data = gzip.decompress(data) | ||||||
|             json.dump(json.loads(data), out_file, ensure_ascii=False, indent=1) |             data = json.loads(data) | ||||||
|  |             # if key == "GACHA_DATA": | ||||||
|  |             #     download_banners(data, server_name) | ||||||
|  |             json.dump(data, out_file, ensure_ascii=False, indent=1) | ||||||
|  |  | ||||||
|         old_mst_ver[key] = new_mst_ver[key] |         old_mst_ver[key] = new_mst_ver[key] | ||||||
|  |  | ||||||
| @@ -93,6 +96,36 @@ async def download_cache(server_name, server : str): | |||||||
|     await session.close() |     await session.close() | ||||||
|     return downloaded_files |     return downloaded_files | ||||||
|  |  | ||||||
|  | async def download_banners(gacha_data, server_name, session): | ||||||
|  |     path = f"/var/www/html/Katworks/KF/assets/KF3/{server_name}/banners/" | ||||||
|  |     os.makedirs(path, exist_ok=True) | ||||||
|  |  | ||||||
|  |     for entry in gacha_data: | ||||||
|  |         banner_name = entry["banner"] | ||||||
|  |         if banner_name == "" or banner_name == None: | ||||||
|  |             continue | ||||||
|  |         banner_name += ".png" | ||||||
|  |         file_path = path + banner_name | ||||||
|  |         if os.path.exists(file_path): | ||||||
|  |             continue | ||||||
|  |          | ||||||
|  |         file_url = "https://parade-mobile-prod-cdn.kemono-friends-3.jp/Texture2D/GachaTop/" + banner_name | ||||||
|  |         file_url_alt = "https://parade-mobile-develop01-app.kemono-friends-3.jp/Texture2D/GachaTop/" + banner_name | ||||||
|  |          | ||||||
|  |         status = 0 | ||||||
|  |         async with session.get(file_url) as resp: | ||||||
|  |             response = await resp.read() | ||||||
|  |             status = resp.status | ||||||
|  |         if status != 200: | ||||||
|  |             async with session.get(file_url_alt) as resp: | ||||||
|  |                 response = await resp.read() | ||||||
|  |                 status = resp.status | ||||||
|  |         if status != 200: continue | ||||||
|  |  | ||||||
|  |         with open(file_path, "wb") as file: | ||||||
|  |             file.write(response) | ||||||
|  |          | ||||||
|  |  | ||||||
| async def download_files(server_name, asset_bundle_url, srv_platform : str): | async def download_files(server_name, asset_bundle_url, srv_platform : str): | ||||||
|     def parse_ab_list(filecontent : str): |     def parse_ab_list(filecontent : str): | ||||||
|         out = {} |         out = {} | ||||||
| @@ -194,6 +227,15 @@ async def convert_files(): | |||||||
|             print("Conversion failed", f) |             print("Conversion failed", f) | ||||||
|  |  | ||||||
| async def manual(): | async def manual(): | ||||||
|  |  | ||||||
|  |     # session = aiohttp.ClientSession() | ||||||
|  |  | ||||||
|  |     # path = f"/var/www/html/Katworks/KF/assets/KF3/{server_name}/cache/" | ||||||
|  |  | ||||||
|  |     # await session.close() | ||||||
|  |  | ||||||
|  |     # return | ||||||
|  |  | ||||||
|     downloaded_cache = {} |     downloaded_cache = {} | ||||||
|     downloaded_files = {} |     downloaded_files = {} | ||||||
|      |      | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								run.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								run.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | gunicorn --bind 127.0.0.1:8081 --config gunicorn_config.py wsgi:app | ||||||
		Reference in New Issue
	
	Block a user