3-exporter.py
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 """ 5 @Time : 2025/3/11 20:50 6 @Author : SiYuan 7 @Email : 863909694@qq.com 8 @File : wxManager-3-exporter.py 9 @Description : 10 """ 11 12 import time 13 from multiprocessing import freeze_support 14 15 from exporter.config import FileType 16 from exporter import HtmlExporter, TxtExporter, AiTxtExporter, DocxExporter, MarkdownExporter, ExcelExporter 17 from wxManager import DatabaseConnection, MessageType 18 19 20 def export(): 21 st = time.time() 22 23 db_dir = '' # 解析后的数据库路径,例如:./db_storage 24 db_version = 4 # 数据库版本,4 or 3 25 26 wxid = 'wxid_00112233' # 要导出好友的wxid 27 output_dir = './data/' # 输出文件夹 28 29 conn = DatabaseConnection(db_dir, db_version) # 创建数据库连接 30 database = conn.get_interface() # 获取数据库接口 31 32 contact = database.get_contact_by_username(wxid) # 查找某个联系人 33 exporter = HtmlExporter( 34 database, 35 contact, 36 output_dir=output_dir, 37 type_=FileType.HTML, 38 message_types=None, # 要导出的消息类型,默认全导出 39 time_range=['2020-01-01 00:00:00', '2035-03-12 00:00:00'], # 要导出的日期范围,默认全导出 40 group_members=None # 指定导出群聊里某个或者几个群成员的聊天记录 41 ) 42 43 exporter.start() 44 et = time.time() 45 print(f'耗时:{et - st:.2f}s') 46 47 48 def batch_export(): 49 """ 50 批量导出HTML 51 :return: 52 """ 53 st = time.time() 54 55 db_dir = '' # 解析后的数据库路径,例如:./db_storage 56 db_version = 4 # 数据库版本,4 or 3 57 output_dir = './data/' # 输出文件夹 58 59 conn = DatabaseConnection(db_dir, db_version) # 创建数据库连接 60 database = conn.get_interface() # 获取数据库接口 61 62 contacts = database.get_contacts() # 查找某个联系人 63 for contact in contacts: 64 exporter = HtmlExporter( 65 database, 66 contact, 67 output_dir=output_dir, 68 type_=FileType.HTML, 69 message_types={MessageType.Text, MessageType.Image, MessageType.LinkMessage}, # 要导出的消息类型,默认全导出 70 time_range=['2020-01-01 00:00:00', '2035-03-12 00:00:00'], # 要导出的日期范围,默认全导出 71 group_members=None # 指定导出群聊里某个或者几个群成员的聊天记录 72 ) 73 74 exporter.start() 75 et = time.time() 76 print(f'耗时:{et - st:.2f}s') 77 78 79 def batch_export_by_fmt(): 80 """ 81 批量导出多种格式 82 :return: 83 """ 84 st = time.time() 85 86 db_dir = '' # 解析后的数据库路径,例如:./db_storage 87 db_version = 4 # 数据库版本,4 or 3 88 89 wxid = 'wxid_00112233' # 要导出好友的wxid 90 output_dir = './data/' # 输出文件夹 91 92 conn = DatabaseConnection(db_dir, db_version) # 创建数据库连接 93 database = conn.get_interface() # 获取数据库接口 94 95 contact = database.get_contact_by_username(wxid) # 查找某个联系人 96 exporters = { 97 FileType.HTML: HtmlExporter, 98 FileType.TXT: TxtExporter, 99 FileType.AI_TXT: AiTxtExporter, 100 FileType.MARKDOWN: MarkdownExporter, 101 FileType.XLSX: ExcelExporter, 102 FileType.DOCX: DocxExporter 103 } 104 for file_type, exporter in exporters.items(): 105 execute = exporter( 106 database, 107 contact, 108 output_dir=output_dir, 109 type_=file_type, 110 message_types=None, # 要导出的消息类型,默认全导出 111 time_range=['2020-01-01 00:00:00', '2035-03-12 00:00:00'], # 要导出的日期范围,默认全导出 112 group_members=None # 指定导出群聊里某个或者几个群成员的聊天记录 113 ) 114 115 execute.start() 116 et = time.time() 117 print(f'耗时:{et - st:.2f}s') 118 119 120 if __name__ == '__main__': 121 freeze_support() 122 export() 123 # batch_export() 124 # batch_export_by_fmt()