Adding type annotations and fixing up formatting.
[kiosk.git] / utils.py
1 #!/usr/bin/env python3
2
3 import time
4 import os
5 from datetime import datetime
6
7 import constants
8
9
10 def timestamp() -> str:
11     t = datetime.fromtimestamp(time.time())
12     return t.strftime("%d/%b/%Y:%H:%M:%S%Z")
13
14
15 def describe_age_of_file(filename) -> str:
16     try:
17         now = time.time()
18         ts = os.stat(filename).st_ctime
19         age = now - ts
20         return describe_duration(age)
21     except Exception as e:
22         return "?????"
23
24
25 def describe_age_of_file_briefly(filename) -> str:
26     try:
27         now = time.time()
28         ts = os.stat(filename).st_ctime
29         age = now - ts
30         return describe_duration_briefly(age)
31     except Exception as e:
32         return "?????"
33
34
35 def describe_duration(age: int) -> str:
36     days = divmod(age, constants.seconds_per_day)
37     hours = divmod(days[1], constants.seconds_per_hour)
38     minutes = divmod(hours[1], constants.seconds_per_minute)
39
40     descr = ""
41     if days[0] > 1:
42         descr = f"{int(days[0]):d} days, "
43     elif days[0] == 1:
44         descr = "1 day, "
45     if hours[0] > 1:
46         descr = descr + f"{int(hours[0]):d} hours, "
47     elif hours[0] == 1:
48         descr = descr + "1 hour, "
49     if len(descr) > 0:
50         descr = descr + "and "
51     if minutes[0] == 1:
52         descr = descr + "1 minute"
53     else:
54         descr = descr + f"{int(minutes[0]):d} minutes"
55     return descr
56
57
58 def describe_duration_briefly(age: int) -> str:
59     days = divmod(age, constants.seconds_per_day)
60     hours = divmod(days[1], constants.seconds_per_hour)
61     minutes = divmod(hours[1], constants.seconds_per_minute)
62
63     descr = ""
64     if days[0] > 0:
65         descr = f"{int(days[0]):d}d "
66     if hours[0] > 0:
67         descr = descr + f"{int(hours[0]):d}h "
68     descr = descr + f"{int(minutes[0]):d}m"
69     return descr
70
71
72 # x = describe_age_of_file_briefly("pages/clock_10_none.html")
73 # print x