@byby56

Как достать словарь из websocket?

Вот такого вида данные в сокете, не знаю как достать эти значения:
"s":"BTCUSDT"
"p":"51654.30"

Потому что не вижу переменную у словаря...
Нужно потом эти значения сравнить в потоке, например:
if "p" > 51500:
     print("Монета больше 51500")


++Rcv raw: b'\x81~\x00\x94{"e":"aggTrade","E":1708502035434,"a":2027020267,"s":"BTCUSDT","p":"51654.30","q":"0.028","f":4617647950,"l":4617647950,"T":1708502035281,"m":false}'

++Rcv decoded: fin=1 opcode=1 data=b'{"e":"aggTrade","E":1708502035434,"a":2027020267,"s":"BTCUSDT","p":"51654.30","q":"0.028","f":4617647950,"l":4617647950,"T":1708502035281,"m":false}'

{"e":"aggTrade","E":1708502035434,"a":2027020267,"s":"BTCUSDT","p":"51654.30","q":"0.028","f":4617647950,"l":4617647950,"T":1708502035281,"m":false}


код самой мини-вебсокетной програмки
import websocket
import _thread
import time
import rel


def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

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

def on_open(ws):
    print("Opened connection")


if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("wss://fstream.binance.com/ws/btcusdt@aggTrade",
                              on_open=on_open,
                              on_message=on_message,
                              on_error=on_error,
                              on_close=on_close)

    ws.run_forever(dispatcher=rel, reconnect=5)  # Set dispatcher to automatic reconnection, 5 second reconnect delay if connection closed unexpectedly
    rel.signal(2, rel.abort)  # Keyboard Interrupt
    rel.dispatch()
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
- Декодировать json.
- Прочитать значения из словаря и распечатать по условию.
import json

def on_message(ws, message):
    data = json.loads(message)
    s = data.get("s")
    p = data.get("p")

    if p:
        _p = float(p)

        if _p > 51500:
            print(f"Монета {s} больше 51500, текущая цена: {_p}")
        else:
            print(f"Монета {s} меньше или равна 51500, текущая цена: {_p}")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы