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()