CoolFace
Apppublic

torahCodes/Torah_Codes

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
4likes
triggers.py83 linesDownload Raw Back to lib
1import datetime2import requests3 4class Trigger:5    def __init__(self, trigger_tags, comparison_tags, time_definition, event_name, included=True):6        self.trigger_tags = set(trigger_tags)7        self.comparison_tags = set(comparison_tags)8        self.time_definition = time_definition9        self.event_name = event_name10        self.included = included11        self.threshold = 012        self.actions = []13        self.sources = []14 15    def add_action(self, action):16        self.actions.append(action)17 18    def remove_action(self, action):19        if action in self.actions:20            self.actions.remove(action)21        else:22            print("Action not found")23 24    def add_source(self, source):25        self.sources.append(source)26 27    def remove_source(self, source):28        if source in self.sources:29            self.sources.remove(source)30        else:31            print("Source not found")32 33    def check_trigger(self, current_tags, current_time):34        if self.included:35            if current_time in self.time_definition and self.trigger_tags.issubset(current_tags):36                self.threshold += 137            else:38                self.threshold = 039        else:40            if current_time in self.time_definition and not self.trigger_tags.intersection(current_tags):41                self.threshold += 142            else:43                self.threshold = 044 45        if self.threshold >= len(self.time_definition):46            self.fire_actions()47            self.make_requests()48 49    def fire_actions(self):50        for action in self.actions:51            action(self.event_name)52 53    def make_requests(self):54        for source in self.sources:55            try:56                response = requests.get(source)57                # Procesar la respuesta aquí si es necesario58                print(f"Request made to {source}. Status code: {response.status_code}")59            except requests.exceptions.RequestException as e:60                print(f"Error making request to {source}: {e}")61 62# Ejemplo de uso:63 64def action_function(event_name):65    print(f"Trigger fired for event: {event_name}")66 67 68if __name__ == "__main__":69 70    # Definición de un trigger71    trigger = Trigger(["tag1", "tag2"], ["tag3", "tag4"], [datetime.time(10, 0), datetime.time(15, 0)], "Event1")72 73    # Añadir una acción al trigger74    trigger.add_action(action_function)75 76    # Añadir una fuente al trigger77    trigger.add_source("https://example.com/api/data")78 79    # Simular la comprobación periódica del trigger (aquí se usaría en un bucle de tiempo real)80    current_tags = {"tag1", "tag2", "tag3"}81    current_time = datetime.datetime.now().time()82    trigger.check_trigger(current_tags, current_time)83