From a81ce5bcbee3793bfc9d82c776f243ff38484095 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Wed, 19 Jun 2024 16:08:03 -0400 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ flake.lock | 61 ++++++++++++++++++++++++++++++++++++ flake.nix | 28 +++++++++++++++++ src/main.py | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 181 insertions(+) create mode 100644 .gitignore create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 src/main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62c09d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env.sh +venv/ diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..90b5b72 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1718318537, + "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..f238a93 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + description = "A very basic python flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + shell = "zsh"; + in { + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + python3 + pyright + black + ]; + OPENAI_API_BASE="https://ai.trkt.in"; + shellHook = '' + source .env.sh + exec ${shell} + ''; + }; + }); +} diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..d58784c --- /dev/null +++ b/src/main.py @@ -0,0 +1,90 @@ +import os +from pyowm.owm import OWM +from openai import OpenAI +from datetime import datetime + +number_map = { + "0": "zero", + "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", +} + + +def serialize_time_part(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(time): + hour = str(time.hour) + if time.hour > 12: + hour = str(time.hour - 12) + hour = serialize_time_part(hour) + minute = str(time.minute) + if time.minute < 10: + minute = f"o'{serialize_time_part(minute)}" + else: + minute = serialize_time_part(minute) + time_string = f"{hour} {minute}" + return time_string + + +def generate_rhyme(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 get_weather(): + pass + + +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) + + +if __name__ == "__main__": + main()