diff --git a/app/DataBase/output_pc.py b/app/DataBase/output_pc.py index 12912d9..6d19734 100644 --- a/app/DataBase/output_pc.py +++ b/app/DataBase/output_pc.py @@ -5,11 +5,11 @@ import traceback from PyQt5.QtCore import pyqtSignal, QThread from PyQt5.QtWidgets import QFileDialog - from app.DataBase.exporter_csv import CSVExporter from app.DataBase.exporter_docx import DocxExporter from app.DataBase.exporter_html import HtmlExporter from app.DataBase.exporter_txt import TxtExporter +from app.DataBase.hard_link import decodeExtraBuf from .package_msg import PackageMsg from ..DataBase import media_msg_db, hard_link_db, micro_msg_db, msg_db from ..log import logger @@ -18,10 +18,12 @@ from ..util.image import get_image os.makedirs('./data/聊天记录', exist_ok=True) + class Output(QThread): """ 发送信息线程 """ + startSignal = pyqtSignal(int) progressSignal = pyqtSignal(int) rangeSignal = pyqtSignal(int) okSignal = pyqtSignal(int) @@ -74,6 +76,7 @@ class Output(QThread): "csv files (*.csv);;all files(*.*)") if not filename[0]: return + self.startSignal.emit(1) filename = filename[0] # columns = ["用户名", "消息内容", "发送时间", "发送状态", "消息类型", "isSend", "msgId"] columns = ['localId', 'TalkerId', 'Type', 'SubType', @@ -99,17 +102,29 @@ class Output(QThread): "csv files (*.csv);;all files(*.*)") if not filename[0]: return + self.startSignal.emit(1) filename = filename[0] # columns = ["用户名", "消息内容", "发送时间", "发送状态", "消息类型", "isSend", "msgId"] columns = ['UserName', 'Alias', 'Type', 'Remark', 'NickName', 'PYInitial', 'RemarkPYInitial', 'smallHeadImgUrl', - 'bigHeadImgUrl'] + 'bigHeadImgUrl', 'label', 'gender', 'telephone', 'signature', 'country/region', 'province', 'city'] contacts = micro_msg_db.get_contact() # 写入CSV文件 with open(filename, mode='w', newline='', encoding='utf-8-sig') as file: writer = csv.writer(file) writer.writerow(columns) # 写入数据 - writer.writerows(contacts) + # writer.writerows(contacts) + for contact in contacts: + detail = decodeExtraBuf(contact[9]) + gender_code = detail.get('gender') + if gender_code == 0: + gender = '未知' + elif gender_code == 1: + gender = '男' + else: + gender = '女' + writer.writerow([*contact[:9], contact[10], gender,detail.get('telephone'),detail.get('signature'),*detail.get('region')]) + self.okSignal.emit(1) def run(self): diff --git a/app/ui/mainview.py b/app/ui/mainview.py index b41a520..57d2183 100644 --- a/app/ui/mainview.py +++ b/app/ui/mainview.py @@ -216,14 +216,16 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): self.stackedWidget.setCurrentIndex(0) def output(self): - self.startBusy() + # self.startBusy() if self.sender() == self.action_output_CSV: self.outputThread = Output(None, type_=Output.CSV_ALL) + self.outputThread.startSignal.connect(lambda x:self.startBusy()) self.outputThread.okSignal.connect( lambda x: self.message('聊天记录导出成功')) self.outputThread.start() elif self.sender() == self.action_output_contacts: self.outputThread = Output(None, type_=Output.CONTACT_CSV) + self.outputThread.startSignal.connect(lambda x: self.startBusy()) self.outputThread.okSignal.connect( lambda x: self.message('联系人导出成功')) self.outputThread.start()