import json
import requests
import websocket
def eval_js_in_opera(js_code: str):
"""Выполняет JS-код в открытой вкладке Opera GX и возвращает результат."""
try:
res = requests.get("http://127.0.0.1:9222/json").json()
target_tab = None
for tab in res:
if tab.get("type") == "page" and "checkers" in tab.get("url", ""):
target_tab = tab
break
if not target_tab:
for tab in res:
if tab.get("type") == "page":
target_tab = tab
break
if not target_tab:
return None
ws_url = target_tab["webSocketDebuggerUrl"]
ws = websocket.create_connection(ws_url)
payload = {
"id": 1,
"method": "Runtime.evaluate",
"params": {
"expression": js_code,
"returnByValue": True
}
}
ws.send(json.dumps(payload))
response = json.loads(ws.recv())
ws.close()
return response.get("result", {}).get("result", {}).get("value")
except Exception:
return None
def get_raw_board():
"""Считывает сырую матрицу поля."""
return eval_js_in_opera("checkers.engine.getField();")