from datetime import datetime import pytz import PIL import os import sys sys.path.append('../') from model.model_registry import get_model_info def detect_language(text: str) -> str: """Detect the langauge of a string.""" try: import polyglot # pip3 install polyglot pyicu pycld2 from polyglot.detect import Detector from polyglot.detect.base import logger as polyglot_logger import pycld2 except ImportError as e: print("Please install the required libraries: polyglot, pycld2: pip3 install polyglot pyicu pycld2") exit(1) polyglot_logger.setLevel("ERROR") try: lang_code = Detector(text).language.name except (pycld2.error, polyglot.detect.base.UnknownLanguage): lang_code = "unknown" return lang_code def get_time_stamp_from_date(date_str:str): """ Convert a date string to a Unix timestamp Args: date_str (str): The input date string in the format 'YYYY-MM-DD-HH:MM-TZ', e.g. '2024-02-10-14:00-PT' """ # Convert the date string into a format that Python's datetime can understand # and specify the correct timezone for PT, which is 'US/Pacific' date_format = "%Y-%m-%d-%H:%M-%Z" # Parse the date string into a datetime object # Note: PT is not directly recognized by pytz, so we manually map it to 'US/Pacific' timezone_map = { "PT": "US/Pacific", } # Extract the timezone abbreviation tz_abbr = date_str.split("-")[-1] # Map the abbreviation to a pytz timezone tz_info = pytz.timezone(timezone_map[tz_abbr]) # Remove the timezone abbreviation for parsing date_str_parsed = date_str.rsplit("-", 1)[0] # Create a datetime object with the corresponding timezone dt = datetime.strptime(date_str_parsed, "%Y-%m-%d-%H:%M").replace(tzinfo=tz_info) # Convert the datetime object to a Unix timestamp unix_timestamp = dt.timestamp() return unix_timestamp def get_date_from_time_stamp(unix_timestamp: int): # Create a datetime object from the Unix timestamp dt = datetime.fromtimestamp(unix_timestamp) # Convert the datetime object to a string with the desired format date_str = dt.strftime("%Y-%m-%d %H:%M:%S %Z") return date_str def get_input_image_path(tstamp, conv_id): # from tstamp to date e.g. 2024-02-10 date_str = datetime.fromtimestamp(tstamp, tz=pytz.timezone("US/Pacific")).strftime("%Y-%m-%d") LOGDIR = os.getenv("LOGDIR") return f"{LOGDIR}/{date_str}-convinput_images/input_image_{conv_id}.png" def load_image_from_path(image_path): # Load the image from the specified # path using the Python Imaging Library (PIL) try: image = PIL.Image.open(image_path) return image except FileNotFoundError: print(f"Image not found at path: {image_path}") return None except PIL.UnidentifiedImageError: print(f"Unidentified image format at path: {image_path}") return None