Загрузка данных


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();")