+#!/usr/bin/env python3
+
import time
+import logging
import os
-import constants
from datetime import datetime
+import constants
+
-def timestamp():
+logger = logging.getLogger(__file__)
+
+
+def timestamp() -> str:
t = datetime.fromtimestamp(time.time())
return t.strftime("%d/%b/%Y:%H:%M:%S%Z")
-def describe_age_of_file(filename):
+def describe_age_of_file(filename: str) -> str:
try:
now = time.time()
ts = os.stat(filename).st_ctime
age = now - ts
+ age = int(age)
return describe_duration(age)
except Exception as e:
+ logger.exception(e)
return "?????"
-def describe_age_of_file_briefly(filename):
+def describe_age_of_file_briefly(filename: str) -> str:
try:
now = time.time()
ts = os.stat(filename).st_ctime
age = now - ts
+ age = int(age)
return describe_duration_briefly(age)
except Exception as e:
+ logger.exception(e)
return "?????"
-def describe_duration(age):
+def describe_duration(age: int) -> str:
days = divmod(age, constants.seconds_per_day)
hours = divmod(days[1], constants.seconds_per_hour)
minutes = divmod(hours[1], constants.seconds_per_minute)
descr = ""
if days[0] > 1:
- descr = "%d days, " % days[0]
+ descr = f"{int(days[0]):d} days, "
elif days[0] == 1:
descr = "1 day, "
if hours[0] > 1:
- descr = descr + ("%d hours, " % hours[0])
+ descr = descr + f"{int(hours[0]):d} hours, "
elif hours[0] == 1:
descr = descr + "1 hour, "
if len(descr) > 0:
if minutes[0] == 1:
descr = descr + "1 minute"
else:
- descr = descr + ("%d minutes" % minutes[0])
+ descr = descr + f"{int(minutes[0]):d} minutes"
return descr
-def describe_duration_briefly(age):
+def describe_duration_briefly(age: int) -> str:
days = divmod(age, constants.seconds_per_day)
hours = divmod(days[1], constants.seconds_per_hour)
minutes = divmod(hours[1], constants.seconds_per_minute)
+
descr = ""
if days[0] > 0:
- descr = "%dd " % days[0]
+ descr = f"{int(days[0]):d}d "
if hours[0] > 0:
- descr = descr + ("%dh " % hours[0])
- descr = descr + ("%dm" % minutes[0])
+ descr = descr + f"{int(hours[0]):d}h "
+ descr = descr + f"{int(minutes[0]):d}m"
return descr
+def minute_number(hour: int, minute: int) -> int:
+ """Convert hour:minute into minute number from start of day."""
+ return hour * 60 + minute
+
+
+def datetime_to_minute_number(dt: datetime) -> int:
+ """Convert a datetime into a minute number (of the day)"""
+ return minute_number(dt.hour, dt.minute)
+
+
+def minute_number_to_time_string(minute_num: int) -> str:
+ """Convert minute number from start of day into hour:minute am/pm
+ string."""
+
+ hour = minute_num // 60
+ minute = minute_num % 60
+ ampm = "a"
+ if hour > 12:
+ hour -= 12
+ ampm = "p"
+ if hour == 12:
+ ampm = "p"
+ if hour == 0:
+ hour = 12
+ return f"{hour:2}:{minute:02}{ampm}"
+
+
# x = describe_age_of_file_briefly("pages/clock_10_none.html")
# print x