| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Node.js 调用的 Python 桥梁脚本。
- 该脚本负责加载编译好的 entry.so / entry.pyd 共享库,并处理来自 Node.js 的 JSON 请求。
- """
- import sys
- import json
- import os
- from pathlib import Path
- # 将 dist/program 目录加入 sys.path,以便能导入 entry.so/.pyd
- BIN_DIR = Path(__file__).parent.parent / "dist" / "program"
- sys.path.insert(0, str(BIN_DIR))
- # 尝试导入编译好的共享库,如果失败则尝试导入源码(开发模式)
- try:
- import entry
- except ImportError as e:
- print(json.dumps({"error": f"Failed to load entry module: {e}"}))
- sys.exit(1)
- def main():
- if len(sys.argv) < 2:
- print(json.dumps({"error": "No API specified"}))
- sys.exit(1)
- api_name = sys.argv[1]
- try:
- if api_name == "getpath":
- result_json = entry.get_path()
- print(result_json)
-
- elif api_name == "loaddata":
- if len(sys.argv) < 3:
- print(json.dumps({"error": "No data"}))
- sys.exit(1)
- result_json = entry.load_data(sys.argv[2])
- print(result_json)
-
- elif api_name == "historydata":
- if len(sys.argv) < 3:
- print(json.dumps({"error": "No data"}))
- sys.exit(1)
- result_json = entry.history_data(sys.argv[2])
- print(result_json)
-
- elif api_name == "deletedata":
- if len(sys.argv) < 3:
- print(json.dumps({"error": "No data"}))
- sys.exit(1)
- result_json = entry.delete_data(sys.argv[2])
- print(result_json)
-
- else:
- print(json.dumps({"error": "Invalid API"}))
-
- except Exception as e:
- print(json.dumps({"error": str(e)}))
- if __name__ == "__main__":
- main()
|