#!/usr/bin/env python3 import sys from datetime import datetime import time import pytz try: if len(sys.argv) < 3: print("Usage: {scriptname} timezone_left timezone_right".format(scriptname=sys.argv[0]), file=sys.stderr) exit(1) try: tzleft = pytz.timezone(sys.argv[1]) tzright = pytz.timezone(sys.argv[2]) except pytz.exceptions.UnknownTimeZoneError as e: print('Unknown time zone "{}"'.format(e.args[0]), file=sys.stderr) exit(1) faces = "🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦🕛" def face_for(t): minute = (t.minute + 15) // 30 hour = (t.hour + 0 if minute < 45 else 1) % 12 return faces[2*hour + minute] def color_for(t): if t.hour < 5 or t.hour > 22: return "888" elif t.hour < 10: return "DB9" elif t.hour < 14: return "DDB" elif t.hour < 19: return "DDD" else: return "D9B" while True: utcnow = datetime.now(tz=pytz.utc) localnow = datetime.now() leftnow = utcnow.astimezone(tzleft ) rightnow = utcnow.astimezone(tzright) print( "%{T2}%{F#" + color_for(leftnow) + "}" + face_for(leftnow) + "%{F}%{T-} " + localnow.strftime("%A %%{T4}%%{F"+color_for(localnow)+"}%H:%M%%{F}%%{T-} %d %b") + " %{T2}%{F#" + color_for(rightnow) + "}" + face_for(rightnow) + "%{F}%{T-}", flush = True ) delay = 60 - localnow.second - (localnow.microsecond * 10e-7) time.sleep(delay) except Exception as e: print(e, file=sys.stderr)