feat: support fetching fest yaml alongside rotations
big changes in this commit lols... why did i originally design it that way anyway?
This commit is contained in:
parent
a630bd34a4
commit
d81d7d7293
2 changed files with 52 additions and 40 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
|||
__pycache__
|
||||
.env
|
||||
boss.yaml
|
||||
fes_boss.yaml
|
||||
node_modules
|
||||
build
|
||||
splatnet_backend.egg-info
|
||||
|
|
@ -7,57 +7,68 @@ from config import settings, BASE_DIR
|
|||
|
||||
def process_boss_file():
|
||||
temp_boss = "bosstemp.bin"
|
||||
output_yaml = "boss.yaml"
|
||||
decrypt_script = os.path.join(BASE_DIR, "services", "decrypt.js")
|
||||
|
||||
if not os.path.exists(decrypt_script):
|
||||
print(f"{decrypt_script} is missing!")
|
||||
return False
|
||||
|
||||
base_url = settings.boss_url.rstrip('/')
|
||||
tasks = [
|
||||
{"url": f"{base_url}/zvGSM4kOrXpkKnpT/schdat2?c=JP&l=en", "output": "boss.yaml"},
|
||||
{"url": f"{base_url}/zvGSM4kOrXpkKnpT/optdat2?c=US&l=en", "output": "fes_boss.yaml"}
|
||||
]
|
||||
|
||||
try:
|
||||
base_url = settings.boss_url.rstrip('/')
|
||||
master_url = f"{base_url}/zvGSM4kOrXpkKnpT/schdat2?c=JP&l=en"
|
||||
|
||||
print(f"data get: {master_url}")
|
||||
|
||||
meta_res = requests.get(master_url, timeout=10)
|
||||
meta_res.raise_for_status()
|
||||
root = ET.fromstring(meta_res.content)
|
||||
data_url_element = root.find(".//Url")
|
||||
if data_url_element is None or not data_url_element.text:
|
||||
print("woops! no <Url> tag found in the XML response")
|
||||
return False
|
||||
real_data_url = data_url_element.text.strip()
|
||||
print(f"parsed data url: {real_data_url}")
|
||||
res = requests.get(real_data_url, timeout=10)
|
||||
res.raise_for_status()
|
||||
|
||||
with open(temp_boss, "wb") as f:
|
||||
f.write(res.content)
|
||||
success_all = True
|
||||
for task in tasks:
|
||||
master_url = task["url"]
|
||||
output_yaml = task["output"]
|
||||
|
||||
node_env = os.environ.copy()
|
||||
node_env["BOSS_AES_KEY"] = settings.boss_aes_key
|
||||
node_env["BOSS_HMAC_KEY"] = settings.boss_hmac_key
|
||||
|
||||
result = subprocess.run(
|
||||
['node', decrypt_script, temp_boss],
|
||||
capture_output=True,
|
||||
text=False,
|
||||
env=node_env
|
||||
)
|
||||
|
||||
if result.returncode != 0:
|
||||
print(f"decrypt fail! {result.stderr.decode()}")
|
||||
return False
|
||||
|
||||
byml_obj = oead.byml.from_binary(result.stdout)
|
||||
yaml_content = oead.byml.to_text(byml_obj)
|
||||
|
||||
with open(output_yaml, "w", encoding="utf-8") as f:
|
||||
f.write(yaml_content)
|
||||
print(f"data get: {master_url}")
|
||||
meta_res = requests.get(master_url, timeout=10)
|
||||
meta_res.raise_for_status()
|
||||
root = ET.fromstring(meta_res.content)
|
||||
data_url_element = root.find(".//Url")
|
||||
|
||||
print(f"yay! success: {output_yaml}")
|
||||
return True
|
||||
if data_url_element is None or not data_url_element.text:
|
||||
print("woops! no <Url> tag found in the XML response")
|
||||
success_all = False
|
||||
continue
|
||||
|
||||
real_data_url = data_url_element.text.strip()
|
||||
print(f"parsed data url: {real_data_url}")
|
||||
res = requests.get(real_data_url, timeout=10)
|
||||
res.raise_for_status()
|
||||
|
||||
with open(temp_boss, "wb") as f:
|
||||
f.write(res.content)
|
||||
|
||||
node_env = os.environ.copy()
|
||||
node_env["BOSS_AES_KEY"] = settings.boss_aes_key
|
||||
node_env["BOSS_HMAC_KEY"] = settings.boss_hmac_key
|
||||
|
||||
result = subprocess.run(
|
||||
['node', decrypt_script, temp_boss],
|
||||
capture_output=True,
|
||||
text=False,
|
||||
env=node_env
|
||||
)
|
||||
|
||||
if result.returncode != 0:
|
||||
print(f"decrypt fail! {result.stderr.decode()}")
|
||||
success_all = False
|
||||
continue
|
||||
|
||||
byml_obj = oead.byml.from_binary(result.stdout)
|
||||
yaml_content = oead.byml.to_text(byml_obj)
|
||||
|
||||
with open(output_yaml, "w", encoding="utf-8") as f:
|
||||
f.write(yaml_content)
|
||||
|
||||
print(f"yay! success: {output_yaml}")
|
||||
|
||||
return success_all
|
||||
|
||||
except ET.ParseError:
|
||||
print("woops! the url returned non xml... we're hanging here")
|
||||
|
|
|
|||
Loading…
Reference in a new issue