From 632a4410809677327c9c4d4e0455b7fd49d0ab70 Mon Sep 17 00:00:00 2001 From: NotSoToothless <67082114+FURRO404@users.noreply.github.com> Date: Fri, 5 Jun 2026 11:48:42 -0700 Subject: [PATCH] new spectra format (#1302) --- tss_ws.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tss_ws.py b/tss_ws.py index 52fd870..033e2fb 100644 --- a/tss_ws.py +++ b/tss_ws.py @@ -25,12 +25,12 @@ import time from pathlib import Path from typing import Any, Callable, Awaitable, List, Dict, Optional -import zstandard as zstd from dotenv import load_dotenv from websockets.asyncio.client import connect as wsconnect from BOT.storage import insert_match, insert_player_games from BOT.autologging import process_game as autolog_process_game +from spectra_ws_payload import SpectraPayloadError, decode_spectra_ws_payload _HERE = Path(__file__).resolve().parent load_dotenv(dotenv_path=_HERE / ".env") @@ -113,7 +113,6 @@ async def listen( return headers = {"Authorization": _auth_header()} - decompressor = zstd.ZstdDecompressor() reconnect_delay = 1 received = 0 @@ -128,16 +127,10 @@ async def listen( log.info("Connected.") reconnect_delay = 1 # reset on successful connect async for message in ws: - raw = message.encode("utf-8") if isinstance(message, str) else bytes(message) try: - text = decompressor.decompress(raw, max_output_size=64 * 1024 * 1024).decode("utf-8") - except zstd.ZstdError: - text = raw.decode("utf-8") - - try: - data = json.loads(text) - except json.JSONDecodeError: - log.warning("Bad JSON frame, skipping") + data = decode_spectra_ws_payload(message) + except SpectraPayloadError as exc: + log.warning("Bad Spectra WS frame, skipping: %s", exc) continue games = normalize(data)