aboutsummaryrefslogtreecommitdiff
path: root/events.py
blob: 77480b9408fb1e10f0751ab6e953fa2931724825 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import subprocess
from datetime import datetime

class Event():
    def __init__(self, dial_manager):
        self.dial_manager = dial_manager

    def get_name(self):
        return "generic event"

    def get_text(self):
        return "event"

    def speak(self):
        text = self.get_text()
        print("speaking:", text)
        subprocess.run(["espeak", text])

class FortuneEvent(Event):
    def __init__(self, dial_manager):
        super().__init__(dial_manager)

    def get_name(self):
        return "fortune"

    def get_text(self):
        res = subprocess.run(["fortune", "-s"], stdout=subprocess.PIPE)
        return res.stdout.decode("utf-8")

class DirectoryEvent(Event):
    def __init__(self, dial_manager):
        super().__init__(dial_manager)

    def get_name(self):
        return "directory"

    def get_text(self):
        def recursive_build(prefix, sequences):
            sequence_list = []
            for key in sequences.keys():
                sequence = prefix+" "+str(key)
                if isinstance(sequences[key], dict):
                    sequence_list += recursive_build(sequence, sequences[key])
                else:
                    sequence_list.append((sequence, sequences[key]))
            return sequence_list
        sequences = self.dial_manager.sequences
        text = ""
        for sequence, event in recursive_build("", sequences):
            text += f"Dial {sequence} for {event.get_name()}. "
        return text


class OperatorEvent(Event):
    def __init__(self, dial_manager):
        super().__init__(dial_manager)

    def get_name(self):
        return "operator"

    def get_text(self):
        now = datetime.now()
        return f"Right now, it is {now.hour} {now.minute}. Dial 4 1 1 for directory."