|
|
import time |
|
|
import requests |
|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
from host import Host |
|
|
|
|
|
load_dotenv() |
|
|
unreal_orchestrator_url = os.getenv("ORCHESTRATOR_URL") |
|
|
api_key_unreal = os.getenv("API_KEY_UNREAL") |
|
|
|
|
|
|
|
|
class TimeManager: |
|
|
def __init__(self, host: Host, show_state: dict): |
|
|
self.show_state = show_state |
|
|
self.single_response_time_limit = 90 |
|
|
self.headers = {"Content-Type": "application/json", "x-api-key": api_key_unreal} |
|
|
self.host = host |
|
|
|
|
|
def guest_time_limit(self): |
|
|
while True: |
|
|
time.sleep(1) |
|
|
if self.show_state["current_guest"] is None: |
|
|
continue |
|
|
self.show_state["time_since_last_guest_message"] += 1 |
|
|
if ( |
|
|
self.show_state["time_since_last_guest_message"] |
|
|
>= self.single_response_time_limit |
|
|
): |
|
|
print("Guest took too long to respond, wrapping up the show.") |
|
|
self.show_state["current_guest"] = None |
|
|
host_response = self.host.guest_took_too_long_to_respond() |
|
|
self.time_since_last_guest_message = 0 |
|
|
payload = {"text": host_response, "is_host": True} |
|
|
response = requests.post( |
|
|
url=f"{unreal_orchestrator_url}/tts", |
|
|
json=payload, |
|
|
headers=self.headers, |
|
|
) |
|
|
if response.status_code != 200: |
|
|
return "Something went wrong!" |
|
|
requests.post( |
|
|
url=f"{unreal_orchestrator_url}/wrapup", |
|
|
json={}, |
|
|
headers=self.headers, |
|
|
) |
|
|
|