Compare commits

23 Commits

Author SHA1 Message Date
577411fadf disabled stg server download 2025-07-14 23:10:28 +02:00
a51c8117d0 undo downloader changes 2025-03-17 00:14:07 +01:00
b5d63d1d00 moved archive to a separate repo 2025-03-15 20:02:36 +01:00
11edbf3abf removed ArchiveOld, added more data to posts, added DMM proxy endpoint 2025-01-27 12:00:15 +01:00
3f8f9f708f added new endpoint 2025-01-23 02:12:04 +01:00
18aa1843cd proxy test 2025-01-21 13:54:11 +01:00
8733294f13 constrained download mode for accounts list 2025-01-18 13:16:52 +01:00
fee0ecfe75 added commands 2025-01-17 12:10:15 +01:00
fb4ad30d03 added commands (test) 2025-01-17 12:03:00 +01:00
2623106212 queries updated to use dictionaries 2025-01-15 21:42:59 +01:00
16c7792b7f Added old archive endpoints 2025-01-15 13:56:06 +01:00
2a852388bf sql command file load 2025-01-13 01:20:39 +01:00
50559223ed added account post count endpoint 2025-01-12 10:31:25 +01:00
6b0de05a80 added post order modes 2025-01-11 18:46:01 +01:00
155394ab75 added GetPosts/Count endpoint 2025-01-11 17:54:42 +01:00
794bf9d30b updated filter 2025-01-05 18:49:14 +01:00
6157eb1e40 added artist filter 2025-01-02 23:21:56 +01:00
db728f21ba added filter by account rating 2025-01-02 22:21:58 +01:00
cbe0074c70 fixes 2025-01-02 13:39:42 +01:00
3a247d6ce1 additional archive endpoints 2025-01-02 12:51:52 +01:00
e7d21a90bb added hidden posts to filter. added date 2024-12-31 16:01:51 +01:00
8b12ca9dae added get_posts endpoint 2024-12-31 12:35:31 +01:00
76b6c6cb79 fix 2024-12-26 16:40:22 +01:00
6 changed files with 68 additions and 82 deletions

6
app.py
View File

@@ -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.Archive.database import Database as KFADB
from modules.proxy import AgreementProxy, LaunchProxy, UpdateProxy
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@@ -11,9 +11,11 @@ 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)

View File

@@ -1,22 +0,0 @@
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

@@ -1,21 +0,0 @@
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

@@ -1,21 +0,0 @@
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

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

48
modules/proxy.py Normal file
View File

@@ -0,0 +1,48 @@
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)