diff --git a/css/style.css b/css/style.css index 19aad40a..086284b0 100644 --- a/css/style.css +++ b/css/style.css @@ -2,22 +2,23 @@ margin: 0; padding: 0; } + /* width */ ::-webkit-scrollbar { width: 10px; } - - /* Track */ + +/* Track */ ::-webkit-scrollbar-track { background: rgb(255, 255, 255); } - + /* Handle */ ::-webkit-scrollbar-thumb { background: rgb(104, 152, 255); } - - /* Handle on hover */ + +/* Handle on hover */ ::-webkit-scrollbar-thumb:hover { background: rgb(58, 120, 255); } diff --git a/index.html b/index.html index ef68c475..83dd59c2 100644 --- a/index.html +++ b/index.html @@ -46,7 +46,8 @@
  • + onclick="document.fullscreen?document.exitFullscreen():document.documentElement.requestFullscreen()">
  • diff --git a/js/utility.js b/js/utility.js index b50c563e..ee40c00f 100644 --- a/js/utility.js +++ b/js/utility.js @@ -9,14 +9,14 @@ function checkFile(url) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", url, false); // false for synchronous request xmlHttp.send(null); - return xmlHttp.status==200; + return xmlHttp.status == 200; } function camelCase(obj) { var newObj = {}; for (d in obj) { if (obj.hasOwnProperty(d)) { - newObj[d.replace(/(\_\w)/g, function(k) { + newObj[d.replace(/(\_\w)/g, function (k) { return k[1].toUpperCase(); })] = obj[d]; } diff --git a/py/generateAudioJsonGlobal.py b/py/generateAudioJsonGlobal.py index ede7f8a4..fcac8e5d 100644 --- a/py/generateAudioJsonGlobal.py +++ b/py/generateAudioJsonGlobal.py @@ -1,8 +1,9 @@ -import os import json +import os + import requests -from getModelsGlobal import getResourceURL, downloadFile +from getModelsGlobal import downloadFile, getResourceURL data = {} @@ -22,9 +23,10 @@ res = requests.get(resUrl).json()["resources"] for asset in res: if "Audio/VOC_JP/" in asset["resource_path"] and "MemorialLobby" in asset["resource_path"]: - keyEvent = ''.join(asset["resource_path"].split("/")[-1].split(".")[:-1]) + keyEvent = ''.join( + asset["resource_path"].split("/")[-1].split(".")[:-1]) fname = ''.join(asset["resource_path"].split("/")[-1]) - + # download ver if _type: path = f"./assets/audio/{fname}" @@ -39,10 +41,10 @@ downloadFile(baseUrl + "/" + asset["resource_path"], path) data[keyEvent] = path else: - # online ver (cors ?) + # online ver (cors ?) data[keyEvent] = baseUrl + "/" + asset["resource_path"] - + with open("./data/audio.json", "w") as f: json.dump(data, f, indent=4) print("="*30) - print("Done!") \ No newline at end of file + print("Done!") diff --git a/py/generateAudioJsonJapan.py b/py/generateAudioJsonJapan.py index f18648d7..ce80ac22 100644 --- a/py/generateAudioJsonJapan.py +++ b/py/generateAudioJsonJapan.py @@ -1,8 +1,9 @@ -import os import json +import os + import requests -from getModelsJapan import getBaseResourceURL, downloadFile +from getModelsJapan import downloadFile, getBaseResourceURL data = {} @@ -23,9 +24,10 @@ res = requests.get(resUrl).json()["Table"] for asset in res: if "Audio/VOC_JP/" in res[asset]["path"] and "MemorialLobby" in res[asset]["path"]: - keyEvent = ''.join(res[asset]["path"].split("/")[-1].split(".")[:-1]) + keyEvent = ''.join( + res[asset]["path"].split("/")[-1].split(".")[:-1]) fname = ''.join(res[asset]["path"].split("/")[-1]) - + # download ver if _type: path = f"./assets/audio/{fname}" @@ -40,10 +42,10 @@ downloadFile(baseUrl + "/" + res[asset]["path"], path) data[keyEvent] = path else: - # online ver (cors ?) + # online ver (cors ?) data[keyEvent] = baseUrl + "/" + res[asset]["path"] - + with open("./data/audio.json", "w") as f: json.dump(data, f, indent=4) print("="*30) - print("Done!") \ No newline at end of file + print("Done!") diff --git a/py/generateModelsJson.py b/py/generateModelsJson.py index 16c11ec2..3135457a 100644 --- a/py/generateModelsJson.py +++ b/py/generateModelsJson.py @@ -1,5 +1,5 @@ -import os import json +import os parentDir = os.listdir("assets/spine/") @@ -22,4 +22,4 @@ os.mkdir("./data") with open("./data/models.json", "w") as f: - json.dump(data, f, indent=6, sort_keys=True) \ No newline at end of file + json.dump(data, f, indent=6, sort_keys=True) diff --git a/py/getModelsGlobal.py b/py/getModelsGlobal.py index 310d3db1..b863d7c2 100644 --- a/py/getModelsGlobal.py +++ b/py/getModelsGlobal.py @@ -1,9 +1,9 @@ +import os from io import BytesIO -import unitypack + import requests +import unitypack from PIL import ImageOps -import os -import json # conf option = { @@ -26,6 +26,7 @@ "curr_patch_version": 0 } + def getVersion(): ''' Return Blue Archive build version and build number. @@ -61,6 +62,7 @@ def getVersion(): print('Fallback to regex') # Fallback import re + # Find all [["*.*.*"]] ver = re.findall(r'\[\[\"+(\d+(.\d+)+(.\d+))+\"\]\]', src) print(ver) @@ -85,6 +87,7 @@ def updateBaData(): "curr_patch_version": 0 } + def getResourceURL(): ''' Return resource url for Blue Archive @@ -93,6 +96,7 @@ def getResourceURL(): print(data) return data["patch"]["resource_path"] + def getModelsList(): ''' Return list of Blue Archive characters url path. @@ -103,14 +107,17 @@ def getModelsList(): for asset in res["resources"]: if "spinecharacters-" in asset["resource_path"] or "spinelobbies-" in asset["resource_path"]: # append url and path - data.append('/'.join(res_url.split("/")[0:-1]) + "/" + asset["resource_path"]) + data.append('/'.join(res_url.split("/") + [0:-1]) + "/" + asset["resource_path"]) return data + def downloadFile(url, fname): src = requests.get(url).content with open(fname, 'wb') as f: f.write(src) + def extractTextAsset(object, dest): data = object.read() if(type(data.script) == bytes): @@ -122,6 +129,7 @@ def extractTextAsset(object, dest): else: raise Exception("Not handled") + def extractTexture2D(object, dest): data = object.read() img = ImageOps.flip(data.image) @@ -130,6 +138,7 @@ def extractTexture2D(object, dest): with open(f"{dest}/{data.name}.png", "wb") as f: f.write(output.getvalue()) + def extractCharacter(src, dest): with open(src, "rb") as f: bundle = unitypack.load(f) @@ -150,6 +159,7 @@ def extractCharacter(src, dest): print(data.name + ".png") extractTexture2D(object, dest) + if __name__ == "__main__": # make folder if not(os.path.isdir("./downloaded_resource")): @@ -161,8 +171,7 @@ def extractCharacter(src, dest): if not(os.path.isdir("./data")): os.makedirs("./data") - - ver = getResourceURL() # There are several ResourceURL to a version + ver = getResourceURL() # There are several ResourceURL to a version print(ver) if(os.path.isfile("./data/version.txt")): with open("./data/version.txt", "r") as f: @@ -178,13 +187,12 @@ def extractCharacter(src, dest): with open("./data/version.txt", "w") as f: f.write(ver[0]) - # important updateBaData() # get model list model_list = getModelsList() - + # download list of model list for index, model in enumerate(model_list): print("="*30) @@ -200,7 +208,8 @@ def extractCharacter(src, dest): continue # spinecharacters and spinelobbies only - character_name = ''.join(fname.split("spinecharacters-")[1].split("-")[0] if "spinecharacters" in fname else fname.split("spinelobbies-")[1].split("-")[0]) + character_name = ''.join(fname.split("spinecharacters-")[1].split("-")[ + 0] if "spinecharacters" in fname else fname.split("spinelobbies-")[1].split("-")[0]) destExtract = f"./assets/spine/{character_name}" # skip if already exists diff --git a/py/getModelsJapan.py b/py/getModelsJapan.py index ca72ba25..a4a74e64 100644 --- a/py/getModelsJapan.py +++ b/py/getModelsJapan.py @@ -1,9 +1,9 @@ +import os from io import BytesIO -import unitypack + import requests +import unitypack from PIL import ImageOps -import os -import json # conf option = { @@ -15,10 +15,12 @@ ba_api = "https://yostar-serverinfo.bluearchiveyostar.com/r47_50ywch97hfg06o8rom7w.json" + def getVersion(): data = requests.get(ba_api).json() return data["ConnectionGroups"][0]['OverrideConnectionGroups'][-1]['Name'] + def getBaseResourceURL(): ''' Return resource url for Blue Archive @@ -28,6 +30,7 @@ def getBaseResourceURL(): return data["ConnectionGroups"][0]['OverrideConnectionGroups'][-1]['AddressablesCatalogUrlRoot'] # https://prod-clientpatch.bluearchiveyostar.com/r47_1_22_46zlzvd7mur326newgu8_2 + /Android/bundleDownloadInfo.json + def getModelsList(): ''' Return list of Blue Archive characters url path. @@ -42,11 +45,13 @@ def getModelsList(): data.append(base_url + '/Android/' + asset["Name"]) return data + def downloadFile(url, fname): src = requests.get(url).content with open(fname, 'wb') as f: f.write(src) + def extractTextAsset(object, dest): data = object.read() if(type(data.script) == bytes): @@ -58,6 +63,7 @@ def extractTextAsset(object, dest): else: raise Exception("Not handled") + def extractTexture2D(object, dest): data = object.read() img = ImageOps.flip(data.image) @@ -66,6 +72,7 @@ def extractTexture2D(object, dest): with open(f"{dest}/{data.name}.png", "wb") as f: f.write(output.getvalue()) + def extractCharacter(src, dest): with open(src, "rb") as f: bundle = unitypack.load(f) @@ -86,6 +93,7 @@ def extractCharacter(src, dest): print(data.name + ".png") extractTexture2D(object, dest) + if __name__ == "__main__": # make folder if not(os.path.isdir("./downloaded_resource")): @@ -97,8 +105,7 @@ def extractCharacter(src, dest): if not(os.path.isdir("./data")): os.makedirs("./data") - - ver = getBaseResourceURL() # There are several ResourceURL to a version + ver = getBaseResourceURL() # There are several ResourceURL to a version print(ver) if(os.path.isfile("./data/version.txt")): with open("./data/version.txt", "r") as f: @@ -114,10 +121,9 @@ def extractCharacter(src, dest): with open("./data/version.txt", "w") as f: f.write(ver) - # get model list model_list = getModelsList() - + # download list of model list for index, model in enumerate(model_list): print("="*30) @@ -133,7 +139,8 @@ def extractCharacter(src, dest): continue # spinecharacters and spinelobbies only - character_name = ''.join(fname.split("spinecharacters-")[1].split("-")[0] if "spinecharacters" in fname else fname.split("spinelobbies-")[1].split("-")[0]) + character_name = ''.join(fname.split("spinecharacters-")[1].split("-")[ + 0] if "spinecharacters" in fname else fname.split("spinelobbies-")[1].split("-")[0]) destExtract = f"./assets/spine/{character_name}" # skip if already exists diff --git a/setup.py b/setup.py index 85247ddd..229b2ebb 100644 --- a/setup.py +++ b/setup.py @@ -2,5 +2,4 @@ from setuptools import setup - setup()