browser_controller.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """
  2. agent67.tools.browser_controller — 浏览器控制器
  3. Lambda: λ action_json. browser_op(action)
  4. """
  5. import json
  6. import platform
  7. import subprocess
  8. import webbrowser
  9. def control_browser(input_json: str) -> str:
  10. """
  11. 浏览器操作。
  12. 支持: open / search / chrome (AppleScript)
  13. """
  14. try:
  15. data = json.loads(input_json)
  16. except json.JSONDecodeError:
  17. text = input_json.strip()
  18. if text.startswith("http"):
  19. data = {"action": "open", "url": text}
  20. else:
  21. data = {"action": "search", "query": text}
  22. action = data.get("action", "open")
  23. try:
  24. if action == "open":
  25. url = data.get("url", "")
  26. if not url.startswith("http"):
  27. url = "https://" + url
  28. webbrowser.open(url)
  29. return f"🌐 已打开: {url}"
  30. elif action == "search":
  31. query = data.get("query", "")
  32. engine = data.get("engine", "google")
  33. urls = {
  34. "google": f"https://www.google.com/search?q={query}",
  35. "bing": f"https://www.bing.com/search?q={query}",
  36. "baidu": f"https://www.baidu.com/s?wd={query}",
  37. }
  38. url = urls.get(engine, urls["google"])
  39. webbrowser.open(url)
  40. return f"🔍 已搜索: {query} (使用 {engine})"
  41. elif action == "chrome" and platform.system() == "Darwin":
  42. script = data.get("script", "")
  43. result = subprocess.run(
  44. ["osascript", "-e", script],
  45. capture_output=True, text=True, timeout=10,
  46. )
  47. return result.stdout.strip() or "✅ AppleScript 已执行"
  48. else:
  49. return f"❌ 未知浏览器操作: {action}"
  50. except Exception as e:
  51. return f"❌ 浏览器错误: {e}"