import json
import websocket
import requests
import threading

def on_message(ws, message):
    data = json.loads(message)
    if data.get('method') == 'Target.targetCreated':
        target_info = data['params']['targetInfo']
        if target_info['type'] == 'page':
            print(f"New tab created: {target_info['title']}")
    elif data.get('method') == 'Target.targetInfoChanged':
        target_info = data['params']['targetInfo']
        if target_info['type'] == 'page':
            print(f"Tab switched to: {target_info['title']}")

def on_error(ws, error):
    print(f"Error: {error}")

def on_close(ws, close_status_code, close_msg):
    print("Connection closed")

def on_open(ws):
    print("Connection established")
    # Enable target discovery
    ws.send(json.dumps({
        "id": 1,
        "method": "Target.setDiscoverTargets",
        "params": {"discover": True}
    }))

def connect_to_chrome():
    # Get the WebSocket URL
    response = requests.get("http://localhost:9222/json/version")
    data = response.json()
    ws_url = data['webSocketDebuggerUrl']

    # Create WebSocket connection
    # ws = websocket.WebSocketApp(ws_url,
    #                             on_message=on_message,
    #                             on_error=on_error,
    #                             on_close=on_close,
    #                             on_open=on_open)

    # ws.run_forever()

if __name__ == "__main__":
    connect_to_chrome()