exporter_txt.py
1 import os 2 import traceback 3 4 from wxManager import MessageType 5 from wxManager.model import Message 6 from exporter.exporter import ExporterBase, get_new_filename 7 8 9 class TxtExporter(ExporterBase): 10 def title(self, message: Message): 11 str_time = message.str_time 12 if message.type == MessageType.System: 13 return f'{str_time}' 14 display_name = message.display_name 15 return f'{str_time} {display_name}' 16 17 def export(self): 18 # 实现导出为txt的逻辑 19 print(f"【开始导出 TXT {self.contact.remark}】") 20 origin_path = self.origin_path 21 os.makedirs(origin_path, exist_ok=True) 22 filename = os.path.join(origin_path, self.contact.remark + '.txt') 23 filename = get_new_filename(filename) 24 messages = self.database.get_messages(self.contact.wxid, time_range=self.time_range) 25 total_steps = len(messages) 26 txt_res = [] 27 for index, message in enumerate(messages): 28 if index and index % 1000 == 0: 29 self.update_progress_callback(index / total_steps) 30 if not self.is_selected(message): 31 continue 32 txt_res.append(f'{self.title(message)}\n{message.to_text()}') 33 with open(filename, mode='w', newline='', encoding='utf-8') as f: 34 f.write('\n\n'.join(txt_res)) 35 self.update_progress_callback(1) 36 print(f"【完成导出 TXT {self.contact.remark}】") 37 self.finish_callback(self.exporter_id)