You've already forked KemoFureApi
							
							Compare commits
	
		
			3 Commits
		
	
	
		
			master
			...
			26a98b53d7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 26a98b53d7 | |||
| a36e6940d9 | |||
| 0ce68c606f | 
							
								
								
									
										6
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								app.py
									
									
									
									
									
								
							| @@ -3,7 +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.proxy import AgreementProxy, LaunchProxy, UpdateProxy | ||||
| from modules.Archive.database import Database as KFADB | ||||
|  | ||||
| app = Flask(__name__) | ||||
| app.config['JSON_AS_ASCII'] = False | ||||
| @@ -11,11 +11,9 @@ app.databases = {} | ||||
|  | ||||
| api = Api(app) | ||||
|  | ||||
| api.add_resource(LaunchProxy, "/DMM/launch") | ||||
| api.add_resource(UpdateProxy, "/DMM/filelist", "/DMM/update") | ||||
| api.add_resource(AgreementProxy, "/DMM/agreement") | ||||
| KF3DB(api) | ||||
| KFKDB(api) | ||||
| KFADB(api) | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     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    | ||||
| @@ -239,24 +239,24 @@ async def manual(): | ||||
|     downloaded_cache = {} | ||||
|     downloaded_files = {} | ||||
|      | ||||
|     # async with aiohttp.ClientSession() as session: | ||||
|     #     param = encode(json.dumps({"version":"1.0.0","dmm_viewer_id":0,"platform":1})) | ||||
|     #     request = await download_bytes(servers[0] + "paradesv/common/GetUrl.do?param=" + param, session) | ||||
|     #     result  = gzip.decompress(request) | ||||
|     #     response = json.loads(result) | ||||
|     #     asset_bundle_url = response["asset_bundle_url"] | ||||
|     #     urlName = asset_bundle_url.split("-")[2] | ||||
|     async with aiohttp.ClientSession() as session: | ||||
|         param = encode(json.dumps({"version":"1.0.0","dmm_viewer_id":0,"platform":1})) | ||||
|         request = await download_bytes(servers[0] + "paradesv/common/GetUrl.do?param=" + param, session) | ||||
|         result  = gzip.decompress(request) | ||||
|         response = json.loads(result) | ||||
|         asset_bundle_url = response["asset_bundle_url"] | ||||
|         urlName = asset_bundle_url.split("-")[2] | ||||
|  | ||||
|     # print("downloading from", servers[0]) | ||||
|     # downloaded_cache = await download_cache(urlName, servers[0]) | ||||
|     # downloaded_files = await download_files(urlName, asset_bundle_url, "Windows") | ||||
|     print("downloading from", servers[0]) | ||||
|     downloaded_cache = await download_cache(urlName, servers[0]) | ||||
|     downloaded_files = await download_files(urlName, asset_bundle_url, "Windows") | ||||
|  | ||||
|     # if downloaded_cache != [] and downloaded_cache != None: | ||||
|     #     with open("/var/www/html/Katworks/KF/assets/KF3/lastUpdate_prod_cache.json", "wt", encoding="utf-8") as file: | ||||
|     #         json.dump(downloaded_cache, file, ensure_ascii=False, indent=1) | ||||
|     # if downloaded_files != [] and downloaded_files != None: | ||||
|     #     with open("/var/www/html/Katworks/KF/assets/KF3/lastUpdate_prod_files.json", "wt", encoding="utf-8") as file: | ||||
|     #         json.dump(downloaded_files, file, ensure_ascii=False, indent=1) | ||||
|     if downloaded_cache != [] and downloaded_cache != None: | ||||
|         with open("/var/www/html/Katworks/KF/assets/KF3/lastUpdate_prod_cache.json", "wt", encoding="utf-8") as file: | ||||
|             json.dump(downloaded_cache, file, ensure_ascii=False, indent=1) | ||||
|     if downloaded_files != [] and downloaded_files != None: | ||||
|         with open("/var/www/html/Katworks/KF/assets/KF3/lastUpdate_prod_files.json", "wt", encoding="utf-8") as file: | ||||
|             json.dump(downloaded_files, file, ensure_ascii=False, indent=1) | ||||
|  | ||||
|     print("downloading from", servers[1]) | ||||
|     asset_bundle_url = "https://parade-mobile-develop01-app.kemono-friends-3.jp/AssetBundles/0.0.0/latest" | ||||
|   | ||||
| @@ -1,48 +0,0 @@ | ||||
| from flask_restful import Resource | ||||
| from flask import current_app as app, request, Request | ||||
|  | ||||
| import requests | ||||
|  | ||||
| def relayRequest(user_request : Request, url, headers): | ||||
|     with requests.Session() as session: | ||||
|         requests.utils.add_dict_to_cookiejar(session.cookies, user_request.cookies) | ||||
|         response = session.post(url, headers=headers, data=request.data) | ||||
|          | ||||
|         result = app.response_class( | ||||
|                 response=response.text, | ||||
|                 status=200, | ||||
|                 mimetype='application/json' | ||||
|         ) | ||||
|         result.headers.add("Access-Control-Allow-Origin", "*") | ||||
|  | ||||
|     return result | ||||
|  | ||||
| class LaunchProxy(Resource): | ||||
|     def post(self): | ||||
|         url = "https://apidgp-gameplayer.games.dmm.com/v5/launch/cl" | ||||
|         headers = {"User-Agent": "DMMGamePlayer5-Win/5.3.12 Electron/32.1.0", | ||||
|                 "Client-App": "DMMGamePlayer5", | ||||
|                     "Client-version": "5.3.12", | ||||
|                     "Content-Type": "application/json"} | ||||
|  | ||||
|         return relayRequest(request, url, headers)  | ||||
|          | ||||
| class UpdateProxy(Resource): | ||||
|     def post(self): | ||||
|         url = "https://apidgp-gameplayer.games.dmm.com/v5/r2/launch/cl" | ||||
|         headers = {"User-Agent": "DMMGamePlayer5-Win/5.3.12 Electron/32.1.0", | ||||
|                 "Client-App": "DMMGamePlayer5", | ||||
|                     "Client-version": "5.3.12", | ||||
|                     "Content-Type": "application/json"} | ||||
|  | ||||
|         return relayRequest(request, url, headers)  | ||||
|      | ||||
| class AgreementProxy(Resource): | ||||
|     def post(self): | ||||
|         url = "https://apidgp-gameplayer.games.dmm.com/v5/agreement/confirm/client" | ||||
|         headers = {"User-Agent": "DMMGamePlayer5-Win/5.3.12 Electron/32.1.0", | ||||
|                 "Client-App": "DMMGamePlayer5", | ||||
|                     "Client-version": "5.3.12", | ||||
|                     "Content-Type": "application/json"} | ||||
|  | ||||
|         return relayRequest(request, url, headers)  | ||||
		Reference in New Issue
	
	Block a user