X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=utils.py;h=98238a1f43e7ec9133122d0f8e0262b5812603b1;hb=0113d4ae8b11e01b695cd15cdb2c317d887e0935;hp=51a29e7680400268ea09ecda867df6ad41105545;hpb=4b1f3d8a8b278ca6d62f461ea80c8ea21080c301;p=kiosk.git diff --git a/utils.py b/utils.py index 51a29e7..98238a1 100644 --- a/utils.py +++ b/utils.py @@ -1,63 +1,108 @@ +#!/usr/bin/env python3 + import time +import logging import os -import constants from datetime import datetime -def timestamp(): +import constants + + +logger = logging.getLogger(__file__) + + +def timestamp() -> str: t = datetime.fromtimestamp(time.time()) - return t.strftime('%d/%b/%Y:%H:%M:%S%Z') + 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] - elif (days[0] == 1): + if days[0] > 1: + descr = f"{int(days[0]):d} days, " + elif days[0] == 1: descr = "1 day, " - if (hours[0] > 1): - descr = descr + ("%d hours, " % hours[0]) - elif (hours[0] == 1): + if hours[0] > 1: + descr = descr + f"{int(hours[0]):d} hours, " + elif hours[0] == 1: descr = descr + "1 hour, " - if (len(descr) > 0): + if len(descr) > 0: descr = descr + "and " - if (minutes[0] == 1): + 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] - if (hours[0] > 0): - descr = descr + ("%dh " % hours[0]) - descr = descr + ("%dm" % minutes[0]) + if days[0] > 0: + descr = f"{int(days[0]):d}d " + if hours[0] > 0: + descr = descr + f"{int(hours[0]):d}h " + descr = descr + f"{int(minutes[0]):d}m" return descr -#x = describe_age_of_file_briefly("pages/clock_10_none.html") -#print x + +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