WeChatMsg/app/DataBase/exporter_csv.py
zetaloop c89ae94f64 添加更详细的运行过程输出,可用于...
可用于判断程序是在缓慢处理中还是卡了,对于特别多的对话记录,ui进度条是几乎不动的
2024-01-11 20:14:21 +08:00

32 lines
1.3 KiB
Python

import csv
import os
from app.DataBase import msg_db
from app.DataBase.output import ExporterBase
class CSVExporter(ExporterBase):
def to_csv(self):
print("【开始导出 CSV {self.contact.remark}")
origin_docx_path = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}"
os.makedirs(origin_docx_path, exist_ok=True)
filename = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}/{self.contact.remark}_utf8.csv"
columns = ['localId', 'TalkerId', 'Type', 'SubType',
'IsSender', 'CreateTime', 'Status', 'StrContent',
'StrTime', 'Remark', 'NickName', 'Sender']
messages = msg_db.get_messages(self.contact.wxid, time_range=self.time_range)
# 写入CSV文件
with open(filename, mode='w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
writer.writerow(columns)
# 写入数据
# writer.writerows(messages)
for msg in messages:
other_data = [msg[12].remark, msg[12].nickName, msg[12].wxid] if self.contact.is_chatroom else []
writer.writerow([*msg[:9], *other_data])
print("【完成导出 CSV {self.contact.remark}")
self.okSignal.emit(1)
def run(self):
self.to_csv()