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