37 lines
1001 B
Python
37 lines
1001 B
Python
|
|
from base64 import b64decode
|
|
from socketio import SimpleClient
|
|
from requests import get
|
|
from sys import stdout
|
|
|
|
|
|
BASE_URL = "https://onemillioncheckboxes.com"
|
|
|
|
|
|
canvas = bytearray(1000000)
|
|
|
|
with get(f"{BASE_URL}/api/initial-state") as req:
|
|
data = req.json()
|
|
buffer = b64decode(data["full_state"].encode() + b"=")
|
|
canvas[:] = buffer
|
|
|
|
|
|
with SimpleClient() as sio:
|
|
sio.connect(f"{BASE_URL}/socket.io")
|
|
while True:
|
|
name, data = sio.receive()
|
|
if name == "batched_bit_toggles":
|
|
bits_on, bits_off, timestamp = data
|
|
for ndx in bits_on:
|
|
byte, bit = divmod(ndx, 8)
|
|
canvas[byte] |= (1 << bit)
|
|
for ndx in bits_off:
|
|
byte, bit = divmod(ndx, 8)
|
|
canvas[byte] &= 0xFF ^ (1 << bit)
|
|
elif name == "full_state":
|
|
buffer = b64decode(data["full_state"].encode() + b"=")
|
|
canvas[:] = buffer
|
|
|
|
stdout.buffer.write(canvas)
|
|
stdout.buffer.flush()
|