laser_wrapper.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Node.js 调用的 Python 桥梁脚本。
  5. 该脚本负责加载编译好的 entry.so / entry.pyd 共享库,并处理来自 Node.js 的 JSON 请求。
  6. """
  7. import sys
  8. import json
  9. import os
  10. from pathlib import Path
  11. # 将 dist/program 目录加入 sys.path,以便能导入 entry.so/.pyd
  12. BIN_DIR = Path(__file__).parent.parent / "dist" / "program"
  13. sys.path.insert(0, str(BIN_DIR))
  14. # 尝试导入编译好的共享库,如果失败则尝试导入源码(开发模式)
  15. try:
  16. import entry
  17. except ImportError as e:
  18. print(json.dumps({"error": f"Failed to load entry module: {e}"}))
  19. sys.exit(1)
  20. def main():
  21. if len(sys.argv) < 2:
  22. print(json.dumps({"error": "No API specified"}))
  23. sys.exit(1)
  24. api_name = sys.argv[1]
  25. try:
  26. if api_name == "getpath":
  27. result_json = entry.get_path()
  28. print(result_json)
  29. elif api_name == "loaddata":
  30. if len(sys.argv) < 3:
  31. print(json.dumps({"error": "No data"}))
  32. sys.exit(1)
  33. result_json = entry.load_data(sys.argv[2])
  34. print(result_json)
  35. elif api_name == "historydata":
  36. if len(sys.argv) < 3:
  37. print(json.dumps({"error": "No data"}))
  38. sys.exit(1)
  39. result_json = entry.history_data(sys.argv[2])
  40. print(result_json)
  41. elif api_name == "deletedata":
  42. if len(sys.argv) < 3:
  43. print(json.dumps({"error": "No data"}))
  44. sys.exit(1)
  45. result_json = entry.delete_data(sys.argv[2])
  46. print(result_json)
  47. else:
  48. print(json.dumps({"error": "Invalid API"}))
  49. except Exception as e:
  50. print(json.dumps({"error": str(e)}))
  51. if __name__ == "__main__":
  52. main()