mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-08-11 00:30:12 -04:00
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
import asyncio
|
|
import json
|
|
|
|
import requests
|
|
|
|
HMS_ACTIONS_JSON_PATH = "backend/app/data/hms_actions.json"
|
|
HMS_REQUEST_URL = "https://e.bambulab.com/hms/GetActionImage.php"
|
|
|
|
HMS_ID_TO_ACTION_NAME_MAP: dict[int, str] = {
|
|
2: "RESUME_PRINTING",
|
|
3: "RESUME_PRINTING_DEFECTS",
|
|
4: "RESUME_PRINTING_PROBELM_SOLVED",
|
|
5: "STOP_PRINTING",
|
|
6: "CHECK_ASSISTANT",
|
|
7: "FILAMENT_EXTRUDED",
|
|
8: "RETRY_FILAMENT_EXTRUDED",
|
|
9: "CONTINUE",
|
|
10: "LOAD_VIRTUAL_TRAY",
|
|
11: "OK_BUTTON",
|
|
12: "FILAMENT_LOAD_RESUME",
|
|
13: "JUMP_TO_LIVEVIEW",
|
|
23: "NO_REMINDER_NEXT_TIME",
|
|
24: "REFRESH_NOZZLE",
|
|
25: "IGNORE_NO_REMINDER_NEXT_TIME",
|
|
27: "IGNORE_RESUME",
|
|
28: "PROBLEM_SOLVED_RESUME",
|
|
29: "TURN_OFF_FIRE_ALARM",
|
|
34: "RETRY_PROBLEM_SOLVED",
|
|
35: "STOP_DRYING",
|
|
37: "CANCLE", # Note: "CANCLE" is intentionally misspelled in the BambuStudio source code
|
|
39: "REMOVE_CLOSE_BTN",
|
|
41: "PROCEED",
|
|
49: "OK_JUMP_RACK",
|
|
51: "ABORT",
|
|
54: "DISABLE_PURIFICATION",
|
|
57: "DONT_REMIND_NEXT_TIME",
|
|
10000: "DBL_CHECK_CANCEL",
|
|
10001: "DBL_CHECK_DONE",
|
|
10002: "DBL_CHECK_RETRY",
|
|
10003: "DBL_CHECK_RESUME",
|
|
10004: "DBL_CHECK_OK",
|
|
}
|
|
|
|
|
|
async def main():
|
|
error_to_action_map: dict[str, list[str]] = {}
|
|
# get the json response from the url
|
|
response = requests.get(HMS_REQUEST_URL)
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
ready_data = {}
|
|
for item in data["data"]:
|
|
# error_code = item["ecode"][:4] + "_" + item["ecode"][4:]
|
|
mapped_actions = []
|
|
for hms_id in item["actions"]:
|
|
if hms_id not in HMS_ID_TO_ACTION_NAME_MAP:
|
|
print(f"Warning: Unrecognized HMS action ID {hms_id} for error code {item['ecode']}")
|
|
else:
|
|
mapped_actions.append(HMS_ID_TO_ACTION_NAME_MAP.get(hms_id, f"UNKNOWN_ACTION_{hms_id}"))
|
|
print(f"ecode: {item['ecode']}, actions: {mapped_actions}, device: {item['device']}")
|
|
if item["device"] not in ready_data:
|
|
ready_data[item["device"]] = {}
|
|
ready_data[item["device"]][item["ecode"]] = mapped_actions
|
|
# ready_data.append(
|
|
# {
|
|
# "ecode": item["ecode"],
|
|
# "actions": mapped_actions,
|
|
# "device": item["device"],
|
|
# }
|
|
# )
|
|
with open(HMS_ACTIONS_JSON_PATH, "w") as f:
|
|
json.dump(ready_data, f, indent=4)
|
|
else:
|
|
print("Failed to fetch data")
|
|
print(error_to_action_map)
|
|
|
|
# autogenerate
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|