Exemplo n.º 1
0
class Manager:

    def __init__(self, save_folder):

        self.session_1 = Session('1', 30)
        self.session_2 = Session('2', 30)
        self.save_folder = save_folder

    @staticmethod
    def transfer_session_info_to_story(identifier, message_list, story_obj: Story):

        for message in message_list:
            story_obj.push_message(identifier, message)

    @staticmethod
    def transfer_session_info_to_session(message_list, session_obj: Session):

        for message in message_list:
            session_obj.push_message(message)

    def run_once(self):

        self.session_1.restart_session()
        self.session_2.restart_session()

        story = Story()

        while self.session_1.is_connected() and self.session_2.is_connected():
            sleep(0.2)

            message_list_1 = self.session_1.get_local_messages()
            message_list_2 = self.session_2.get_local_messages()

            self.transfer_session_info_to_session(message_list_1, self.session_2)
            self.transfer_session_info_to_session(message_list_2, self.session_1)
            self.transfer_session_info_to_story(self.session_1.identifier, message_list_1, story)
            self.transfer_session_info_to_story(self.session_2.identifier, message_list_2, story)

            self.session_1.read_messages()
            self.session_2.read_messages()

            self.session_1.update_status()
            self.session_2.update_status()

        story.save_as_txt(self.save_folder)

    def run_once_and_exit(self):

        self.run_once()
        self.session_1.destroy_session()
        self.session_2.destroy_session()

    def run_multiple(self, tries):

        for _ in range(tries):
            self.run_once()

        self.session_1.destroy_session()
        self.session_2.destroy_session()

    def run_infinite(self):

        while True:
            self.run_once()