Spaces:
Running
on
Zero
Running
on
Zero
| 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 | |