aboutsummaryrefslogtreecommitdiff
path: root/events.py
diff options
context:
space:
mode:
Diffstat (limited to 'events.py')
-rw-r--r--events.py49
1 files changed, 38 insertions, 11 deletions
diff --git a/events.py b/events.py
index 77480b9..1ed185c 100644
--- a/events.py
+++ b/events.py
@@ -1,9 +1,13 @@
import subprocess
from datetime import datetime
+from config import config
+import requests
class Event():
- def __init__(self, dial_manager):
+ def __init__(self, dial_manager, phone_held, phone_hung_up):
self.dial_manager = dial_manager
+ self.phone_held = phone_held
+ self.phone_hung_up = phone_hung_up
def get_name(self):
return "generic event"
@@ -17,9 +21,6 @@ class Event():
subprocess.run(["espeak", text])
class FortuneEvent(Event):
- def __init__(self, dial_manager):
- super().__init__(dial_manager)
-
def get_name(self):
return "fortune"
@@ -28,9 +29,6 @@ class FortuneEvent(Event):
return res.stdout.decode("utf-8")
class DirectoryEvent(Event):
- def __init__(self, dial_manager):
- super().__init__(dial_manager)
-
def get_name(self):
return "directory"
@@ -47,14 +45,11 @@ class DirectoryEvent(Event):
sequences = self.dial_manager.sequences
text = ""
for sequence, event in recursive_build("", sequences):
- text += f"Dial {sequence} for {event.get_name()}. "
+ text += f"For {event.get_name()} dial {sequence}. "
return text
class OperatorEvent(Event):
- def __init__(self, dial_manager):
- super().__init__(dial_manager)
-
def get_name(self):
return "operator"
@@ -62,3 +57,35 @@ class OperatorEvent(Event):
now = datetime.now()
return f"Right now, it is {now.hour} {now.minute}. Dial 4 1 1 for directory."
+
+class WeatherEvent(Event):
+ def get_name(self):
+ return "weather"
+
+ def get_text(self):
+ key = config["openweathermap"]["key"]
+ lat = config["openweathermap"]["lat"]
+ lon = config["openweathermap"]["lon"]
+ location = config["openweathermap"]["location"]
+ units = config["openweathermap"]["units"]
+ onecall_url = f"https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&appid={key}&units={units}"
+ onecall = requests.get(onecall_url).json()
+ current_temp = onecall["current"]["temp"]
+ current_desc = onecall["current"]["weather"][0]["description"]
+ weather = f"In {location}, it is {current_temp} degrees with {current_desc}. "
+ high_temp = onecall["daily"][0]["temp"]["max"]
+ pop = onecall["daily"][0]["pop"] * 100
+ forecast = f"Today there is a high of {high_temp} with a {pop} percent chance of percipitation."
+ return f"{weather}{forecast}"
+
+
+class TimerEvent(Event):
+ def get_name(self):
+ return "timer"
+
+ def get_text(self):
+ start = datetime.now()
+ self.phone_hung_up.wait()
+ end = datetime.now()
+ print(end - start)
+ return "time"