def write_log(file_path, text, err=''): """ Writing text to file_path file with some err. If no err is present - writing nothing. """ try: with open(file_path, 'a') as f: f.write("{:%Y-%m-%d-%H:%M: }".format(datetime.now()) + text + str(err) + '\n') except IOError as e: view_tk(str(e))
def parser(self): """ TelnetParser's class method. """ try: self.tn = Telnet(self.HOST) except Exception as e: self.write_log(self.FILE_ERR, 'Connection to server is not available: ', e) sleep(5) else: while True: str_all = self.tn.read_until(b'\r\r\n\r\n').decode('UTF-8') try: call_info = self.parse_string(str_all, self.SEARCH_LIST) except (TypeError, ValueError) as e: self.write_log(self.FILE_ERR, 'Error parsing: ', e) else: if call_info is not None: result = self.TEXT + call_info[0] + ' ' + call_info[1] self.CONTACTS_LOCK.acquire(1) for contact in self.contacts_book: if call_info[0] == contact.phone: caller = contact break else: caller = Contact(call_info[0]) self.contacts_book.append(caller) self.save_contacts() self.CONTACTS_LOCK.release() self.write_log(self.FILE_OUT, result + ' ' + str(caller) + ' to 0' + call_info[2]) if call_info[2] == super().config.get('search', 'search1'): view_tk(result + '\n' + str(caller)) else: self.send_mail(result + ' ' + str(caller) + ' to 0' + call_info[2])