info-beamer/ffnord-con-2015-2/room/service

56 lines
1.3 KiB
Python
Executable file

#!/usr/bin/python
import sys
import time
import pytz
import socket
from calendar import timegm
from datetime import datetime, date
diff = None
# Fake time in UTC
#diff = datetime(2015,9,11,7,29,00) - datetime.utcnow()
met = pytz.timezone("Europe/Berlin")
def current_time():
now = datetime.utcnow()
if diff:
now += diff
timestamp = timegm(now.timetuple()) + now.microsecond / 1000000.
now = now.replace(tzinfo=pytz.utc)
now = now.astimezone(met)
now = now.replace(tzinfo=None)
return now, timestamp
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def send(data):
sock.sendto(data, ('127.0.0.1', 4444))
print >>sys.stderr, "SENT >>> ", data
def send_clock(now, ts):
day = (now.date() - date(2015, 9, 11)).days
since_midnight = (
now -
now.replace(hour=0, minute=0, second=0, microsecond=0)
)
since_midnight = since_midnight.seconds + since_midnight.microseconds / 1000000.
send('room/clock/day:%d' % day)
send('room/clock/set:%f' % ts)
send('room/clock/midnight:%f' % since_midnight)
def main():
while 1:
now, ts = current_time()
if now.year < 2000:
print >>sys.stderr, "too soon"
time.sleep(1)
continue
send_clock(now, ts)
time.sleep(2)
if __name__ == "__main__":
main()