Last active 1595176589

a rough python mockup implementation of the qlocktwo clock

qlocktwo.py Raw
1from datetime import datetime
2from textwrap import wrap
3
4hour = ["twelve", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven"]
5letters = "ITLISASAMPMACQUARTERDCTWENTYFIVEXHALFSTENFTOPASTERUNINEONESIXTHREEFOURFIVETWOEIGHTELEVENSEVENTWELVETENSEOCLOCK" # 110 letters
6
7def get_led_matrix():
8 out = "0" * len(letters)
9 time = get_time_in_words()
10 for word in time.split():
11 start = find_substr_in_str(word.upper(), letters)
12 end = start + len(word)
13 out = out[:start] + "1" * len(word) + out[end:]
14 return out
15
16def find_substr_in_str(needle, haystack):
17 for c in range(0,len(haystack)):
18 if haystack[c:c+len(needle)] == needle:
19 return c
20
21def get_time_in_words(time=None):
22 if not time:
23 time = datetime.now()
24 h,m = hour[time.hour%12], time.minute
25 if time.second > 30:
26 m += 1
27 m = round(m/5)*5
28 if m == 0:
29 return f"it is {h} oclock"
30 elif m == 5:
31 return f"five past {h}"
32 elif m == 10:
33 return f"ten past {h}"
34 elif m == 15:
35 return f"quarter past {h}"
36 elif m == 20:
37 return f"twenty past {h}"
38 elif m == 25:
39 return f"twentyfive past {h}"
40 elif m == 30:
41 return f"half past {h}"
42 elif m == 35:
43 return f"twentyfive to {h}"
44 elif m == 40:
45 return f"twenty to {h}"
46 elif m == 45:
47 return f"quarter to {h}"
48 elif m == 50:
49 return f"ten to {h}"
50 elif m == 55:
51 return f"five to {h}"
52
53if __name__ == "__main__":
54 print(datetime.now())
55 print(get_time_in_words())
56 print("\n".join(wrap(get_led_matrix(),11)))
57 print("\n".join(wrap(letters,11)))