#!/usr/bin/env nix-shell
#!nix-shell -i python -p python3 --pure

import sys
import time
import random
from socket import *


fps = 3
pixels = 50
port = 4213

randomizeBrightness = False


if len(sys.argv) > 1:
  hosts = sys.argv[1:]
else:
  hosts = ['ringclockDOTmake', 'ringclockDOThack', 'ringclockDOTelab']


s = socket(AF_INET, SOCK_DGRAM)

def cyan():
  r = random.randint(0, 32)
  g = random.randint(64, 255)

  out = [r, g, int(g/6), 0]

  if randomizeBrightness:
    b = random.random()
    out = [ int(px * b) for px in out ]

  return out


period = 1 / fps

while True:

#   if fps >= 10:
#     data = [1]
#   else:
#     data = [int( 50 * period )]

  data = [int( 50 * period )]

  for _ in range(pixels):
    data += cyan()

  data = bytearray(b'fxbuffer') + bytearray(data)
  for host in hosts:
    try:
      s.sendto(data, (host, port))
    except:
      pass
  time.sleep(period)