diff --git a/flake.nix b/flake.nix index f238a93..e36d35f 100644 --- a/flake.nix +++ b/flake.nix @@ -18,7 +18,6 @@ pyright black ]; - OPENAI_API_BASE="https://ai.trkt.in"; shellHook = '' source .env.sh exec ${shell} diff --git a/src/__pycache__/clock.cpython-311.pyc b/src/__pycache__/clock.cpython-311.pyc new file mode 100644 index 0000000..5c1fcd2 Binary files /dev/null and b/src/__pycache__/clock.cpython-311.pyc differ diff --git a/src/__pycache__/weather.cpython-311.pyc b/src/__pycache__/weather.cpython-311.pyc new file mode 100644 index 0000000..8b317c9 Binary files /dev/null and b/src/__pycache__/weather.cpython-311.pyc differ diff --git a/src/clock.py b/src/clock.py new file mode 100644 index 0000000..be50629 --- /dev/null +++ b/src/clock.py @@ -0,0 +1,87 @@ +from time import sleep +import datetime as dt +from datetime import datetime +from openai import OpenAI +import threading + +number_map = { + "0": "o'clock", + "1": "one", + "2": "two", + "3": "three", + "4": "four", + "5": "six", + "6": "six", + "7": "seven", + "8": "eight", + "9": "nine", + "10": "ten", + "11": "eleven", + "12": "twelve", + "13": "thirteen", + "14": "fourteen", + "15": "fifteen", + "16": "sixteen", + "17": "seventeen", + "18": "eighteen", + "19": "nineteen", + "20": "twenty", + "30": "thirty", + "40": "forty", + "50": "fifty", +} + + +class Clock: + def __init__(self): + pass + + def serialize_time_part(self, part): + part_string = "" + if part in number_map: + part_string += number_map[part] + else: + tens_str = number_map[f"{part[0]}0"] + ones_str = number_map[part[1]] + part_string += f"{tens_str}-{ones_str}" + return part_string + + def serialize_time(self, time): + hour = str(time.hour) + if time.hour > 12: + hour = str(time.hour - 12) + hour = self.serialize_time_part(hour) + minute = str(time.minute) + if time.minute < 10: + minute = f"o'{self.serialize_time_part(minute)}" + else: + minute = self.serialize_time_part(minute) + time_string = f"{hour} {minute}" + return time_string + + def generate_rhyme(self, time): + client = OpenAI() + response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "user", + "content": f"Finish this sentence about the time with a rhyme. It's {time}, ", + } + ], + ) + rhyme = response.choices[0].message.content + return f"It's {time}, {rhyme}" + + def start_update_loop(self): + thread = threading.Thread(target=self.update_loop) + thread.daemon = True + thread.start() + + def update_loop(self): + while True: + now = datetime.now() + then = datetime(now.year, now.month, now.day, now.hour, now.minute + 1, 0) + seconds_until = (then - now).total_seconds() + print(seconds_until) + sleep(1) diff --git a/src/main.py b/src/main.py index d58784c..f7a5ab9 100644 --- a/src/main.py +++ b/src/main.py @@ -1,10 +1,11 @@ -import os -from pyowm.owm import OWM +from weather import Weather +from time import sleep +from clock import Clock from openai import OpenAI from datetime import datetime number_map = { - "0": "zero", + "0": "o'clock", "1": "one", "2": "two", "3": "three", @@ -68,23 +69,19 @@ def generate_rhyme(time): ], ) rhyme = response.choices[0].message.content - return f"It's {time} {rhyme}" - - -def get_weather(): - pass + return f"It's {time}, {rhyme}" def main(): - use_time = datetime.now() - serialized_time = serialize_time(use_time) - print(serialized_time) - sentence = generate_rhyme(serialized_time) - weather = get_weather() - - print(sentence) - print(weather) - + # weather_manager = Weather() + # weather_manager.start_update_loop() + # use_time = datetime.now() + # serialized_time = serialize_time(use_time) + # sentence = generate_rhyme(serialized_time) + clock_manager = Clock() + clock_manager.start_update_loop() + sleep(1000) + if __name__ == "__main__": main() diff --git a/src/weather.py b/src/weather.py new file mode 100644 index 0000000..8291678 --- /dev/null +++ b/src/weather.py @@ -0,0 +1,28 @@ +from time import sleep +import requests +import os +import threading + + +class Weather: + def __init__(self): + self.weather = self.get_weather() + + def get_weather(self): + api_key = os.environ["WEATHER_API_KEY"] + location = os.environ["WEATHER_LOCATION"] + units = "imperial" # TODO: Make environment variable + url = f"https://api.tomorrow.io/v4/weather/realtime?location={location}&units={units}&apikey={api_key}" + headers = {"accept": "application/json"} + response = requests.get(url, headers=headers) + return response.json() + + def start_update_loop(self): + thread = threading.Thread(target=self.update_loop) + thread.daemon = True + thread.start() + + def update_loop(self): + while True: + sleep(1200) + self.weather = self.get_weather()