/ example / 3-exporter.py
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()