build: move browser-bridge.py to opencortex-contrib
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 2s
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 2s
This commit is contained in:
@@ -1,54 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import base64
|
|
||||||
from playwright.sync_api import sync_playwright
|
|
||||||
|
|
||||||
def run_bridge():
|
|
||||||
# Read command from stdin
|
|
||||||
try:
|
|
||||||
raw_input = sys.stdin.read()
|
|
||||||
if not raw_input:
|
|
||||||
print(json.dumps({"status": "error", "message": "No input provided"}))
|
|
||||||
return
|
|
||||||
|
|
||||||
args = json.loads(raw_input)
|
|
||||||
except Exception as e:
|
|
||||||
print(json.dumps({"status": "error", "message": f"Invalid JSON input: {str(e)}"}))
|
|
||||||
return
|
|
||||||
|
|
||||||
url = args.get("url")
|
|
||||||
action = args.get("action", "extract_text")
|
|
||||||
selector = args.get("selector", "body")
|
|
||||||
|
|
||||||
if not url:
|
|
||||||
print(json.dumps({"status": "error", "message": "No URL provided"}))
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
with sync_playwright() as p:
|
|
||||||
browser = p.chromium.launch(headless=True)
|
|
||||||
page = browser.new_page()
|
|
||||||
|
|
||||||
# Navigate and wait for network to be idle
|
|
||||||
page.goto(url, wait_until="networkidle")
|
|
||||||
|
|
||||||
result = {"status": "success", "url": url}
|
|
||||||
|
|
||||||
if action == "extract_text":
|
|
||||||
result["content"] = page.inner_text(selector)
|
|
||||||
elif action == "screenshot":
|
|
||||||
screenshot_bytes = page.screenshot()
|
|
||||||
result["screenshot_base64"] = base64.b64encode(screenshot_bytes).decode("utf-8")
|
|
||||||
else:
|
|
||||||
result["status"] = "error"
|
|
||||||
result["message"] = f"Unknown action: {action}"
|
|
||||||
|
|
||||||
browser.close()
|
|
||||||
print(json.dumps(result))
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(json.dumps({"status": "error", "message": f"Playwright Error: {str(e)}"}))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
run_bridge()
|
|
||||||
Reference in New Issue
Block a user