torahCodes/Torah_Codes
4
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 