56 lines
1.3 KiB
Python
Executable file
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()
|