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


import json
import time
import requests
import websocket

def eval_js_in_opera(js_code):
    """Отправляет JavaScript-код прямо в открытую вкладку Opera GX"""
    try:
        # 1. Получаем список открытых вкладок
        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
        
        # Если вкладка не найдена по слову checkers, берем первую активную
        if not target_tab:
            for tab in res:
                if tab.get("type") == "page":
                    target_tab = tab
                    break

        if not target_tab:
            print("Не найдено открытых страниц в Opera!")
            return None

        # 2. Подключаемся к вкладке через WebSocket
        ws_url = target_tab["webSocketDebuggerUrl"]
        ws = websocket.create_connection(ws_url)

        # 3. Выполняем JavaScript код
        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 as e:
        print(f"Ошибка связи с Opera: {e}")
        return None

# --- ЗАПУСК ОТСЛЕЖИВАНИЯ ---
print("Подключение к Opera GX по DevTools Protocol...")

last_board = None

try:
    while True:
        # Выполняем JS-команду получения поля
        board = eval_js_in_opera("checkers.engine.getField();")
        
        if board:
            if board != last_board:
                print("\n=== АКТУАЛЬНАЯ ДОСКА ===")
                for row in board:
                    print(row)
                last_board = board
        else:
            print("Убедитесь, что Opera открыта и на странице запущены шашки.")
            
        time.sleep(2)

except KeyboardInterrupt:
    print("\nСкрипт остановлен.")