bongo katze klappt /

import json
import time
import os
import random
import requests
import keyboard
import threading


GAME_NAME = "BONGO_KATZE"
EVENT_NAME = "SPIEL_BONGO"




lock = threading.Lock()
frame_index = 0
bongo_frames = [
    [0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,192,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,248,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,127,128,0,0,0,0,0,0,0,0,0,0,0,1,240,0,7,240,0,0,0,0,0,0,0,0,0,0,0,3,192,0,0,124,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,15,128,0,0,0,0,0,0,0,0,0,15,14,0,0,0,3,192,12,0,0,0,0,0,0,0,0,63,156,0,0,0,0,240,126,0,0,0,0,0,0,0,0,113,216,0,0,0,0,61,254,0,0,0,0,0,0,0,0,96,240,0,0,0,0,15,198,0,0,0,0,0,0,0,0,205,112,0,0,0,0,3,6,0,0,0,0,0,0,0,0,205,184,0,0,0,0,1,6,0,0,0,0,0,0,0,0,240,24,0,0,0,0,0,6,0,0,0,0,0,0,0,0,214,0,12,0,0,0,0,6,0,0,0,0,0,0,0,0,207,0,28,0,0,0,0,6,0,0,0,0,0,0,0,0,196,0,28,136,0,0,0,6,0,0,0,0,0,0,0,0,192,0,0,120,0,0,0,14,0,0,0,0,0,0,0,0,96,0,0,12,128,0,0,12,0,0,0,0,0,0,0,0,124,0,0,7,0,0,0,12,0,0,0,0,0,0,0,0,63,192,0,0,0,192,0,28,0,0,0,0,0,0,0,0,3,252,0,0,1,192,0,24,0,0,0,0,0,0,0,0,0,63,128,0,1,192,0,28,0,0,0,0,0,0,0,0,0,7,248,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,127,128,0,0,0,12,0,0,0,0,0,0,0,0,0,0,7,240,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,255,0,96,0,6,0,0,0,0,0,0,0,0,0,0,0,15,240,224,0,7,0,0,0,0,0,0,0,0,0,0,0,0,255,192,0,3,0,0,0,0,0,0,0,0,0,0,0,0,15,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,3,0,15,129,128,0,0,0,0,0,0,0,0,0,0,0,3,0,127,225,128,0,0,0,0,0,0,0,0,0,0,0,3,255,248,253,128,0,0,0,0,0,0,0,0,0,0,0,1,255,192,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0],
    [0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,192,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,248,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,127,128,0,0,0,0,0,0,0,0,0,0,0,1,240,0,7,240,0,0,0,0,0,0,0,0,0,0,0,3,192,0,0,124,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,15,128,0,0,0,0,0,0,0,0,0,0,14,0,0,0,3,192,12,0,0,0,0,0,0,0,0,0,28,0,0,0,0,240,126,0,0,0,0,0,0,0,0,0,120,0,0,0,0,61,254,0,0,0,0,0,0,0,0,0,240,0,0,0,0,15,198,0,0,0,0,0,0,0,0,1,192,0,0,0,0,3,6,0,0,0,0,0,0,0,0,3,128,0,0,0,0,1,6,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,14,0,12,0,0,0,0,6,0,0,0,0,0,0,0,0,28,0,28,0,0,0,0,6,0,0,0,0,0,0,0,0,56,0,28,136,0,0,0,6,0,0,0,0,0,0,0,0,48,0,0,120,0,3,192,14,0,0,0,0,0,0,0,0,96,0,0,12,128,7,240,12,0,0,0,0,0,0,0,0,224,0,0,7,0,14,56,12,0,0,0,0,0,0,0,0,192,0,0,0,0,205,28,28,0,0,0,0,0,0,0,0,192,0,0,0,1,217,172,24,0,0,0,0,0,0,0,0,192,7,128,0,1,216,118,28,0,0,0,0,0,0,0,0,192,127,248,0,0,26,6,12,0,0,0,0,0,0,0,0,231,248,127,128,0,26,224,12,0,0,0,0,0,0,0,0,127,192,7,240,0,24,224,6,0,0,0,0,0,0,0,0,24,0,0,255,0,24,192,6,0,0,0,0,0,0,0,0,0,0,0,15,240,24,0,7,0,0,0,0,0,0,0,0,0,0,0,0,255,204,0,3,0,0,0,0,0,0,0,0,0,0,0,0,15,252,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,63,240,1,128,0,0,0,0,0,0,0,0,0,0,0,0,1,255,129,128,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0]
]


reference_128x36 = [
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,12,0,0,
     0,0,28,0,0,28,0,0,0,112,0,0,0,12,0,0,0,4,28,0,0,28,0,0,0,112,0,0,0,0,0,0,0,14,28,0,0,28,0,0,0,112,0,0,0,0,
     0,0,0,4,127,0,120,28,7,0,112,112,224,14,0,0,28,1,128,1,255,193,254,127,31,193,252,115,248,63,140,236,127,
     15,224,1,193,195,207,127,63,227,254,119,28,113,207,236,227,156,112,3,128,227,135,28,112,119,6,118,12,96,
     207,12,193,152,48,3,28,99,192,28,112,119,7,119,0,192,108,13,128,216,0,31,54,113,248,28,112,119,7,115,192,
     192,108,13,128,223,0,63,34,112,254,28,127,247,255,113,248,255,236,13,255,199,224,31,54,112,31,28,127,247,
     255,112,28,192,12,13,128,0,112,3,28,96,7,28,112,7,0,112,14,192,12,13,128,0,56,3,128,227,131,28,112,119,7,
     118,6,224,108,13,192,216,24,3,193,227,199,31,63,227,254,119,14,112,204,12,225,156,48,1,247,193,254,31,31,
     193,252,115,252,63,140,12,127,15,240,0,255,128,124,31,7,0,112,112,240,14,12,12,28,3,128,0,28,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 ]




def gsdk_init():
    COREPROPS_PATH = os.path.expandvars(
        r"%PROGRAMDATA%\SteelSeries\SteelSeries Engine 3\coreProps.json"
    )
    print(f"[DEBUG] Opening file at '{COREPROPS_PATH}'.")


    with open(COREPROPS_PATH, "r") as f:
        config = json.loads(f.read())
        address = "http://" + config["address"]
        print(f"[DEBUG] SteelSeries Engine running at '{address}'.")
        return { "address": address }
    return None


def gsdk_raw_post(gsdk, endpoint, data):
    url = f"{gsdk['address']}{endpoint}"
    response = requests.post(url, json=data)
    return response.ok


def gsdk_register(gsdk):
    game_registration = gsdk_raw_post(gsdk, "/game_metadata", {
        "game": GAME_NAME,
        "game_display_name": "Bongo Katze",
        "developer": "Leo und Chris"
    })


    event_registration1 = gsdk_raw_post(gsdk, "/bind_game_event", {
        "game": GAME_NAME,
        "event": EVENT_NAME + "0",
        "value_optional": True,
        "handlers": [{
            "device-type": "screened",
            "zone": "one",
            "mode": "screen",
            "datas": [
                {
                    "image-data": bongo_frames[0]
                }
            ]
        }]
    })


    event_registration2 = gsdk_raw_post(gsdk, "/bind_game_event", {
        "game": GAME_NAME,
        "event": EVENT_NAME + "1",
        "value_optional": True,
        "handlers": [{
            "device-type": "screened",
            "zone": "one",
            "mode": "screen",
            "datas": [
                {
                    "image-data": bongo_frames[1]
                }
            ]
        }]
    })


    return (game_registration and event_registration1 and event_registration2)


def gsdk_heartbeat(gsdk):
    return gsdk_raw_post(gsdk, "/game_heartbeat", { "game": GAME_NAME })


def gsdk_show_image(gsdk, event):
    return gsdk_raw_post(gsdk, "/game_event", {
        "game": GAME_NAME,
        "event": event,
        "data": {
            "value": 0
        }
    })




def main():
    sdk = gsdk_init()
    print(f"Registering with {sdk}...")


    gsdk_register(sdk)


    def on_key(event):
        global frame_index
        if event.event_type == "down":
            with lock:
                frame_index = (frame_index + 1) % len(bongo_frames)
                gsdk_show_image(sdk, EVENT_NAME + str(frame_index))


    keyboard.hook(on_key)
    
    while True:
        time.sleep(5.0)
        gsdk_heartbeat(sdk)
        


if __name__ == "__main__":
    main()

original:  #mSeSK "bongo katze klappt "
published:  2025-07-31T17:24:09Z