移除批量导出docx

This commit is contained in:
shuaikangzhou 2024-01-15 19:51:08 +08:00
parent 7afa2b6846
commit 117f811d13
6 changed files with 53 additions and 33 deletions

View File

@ -7,7 +7,7 @@ from app.DataBase.output import ExporterBase
class CSVExporter(ExporterBase): class CSVExporter(ExporterBase):
def to_csv(self): def to_csv(self):
print("【开始导出 CSV {self.contact.remark}") print(f"【开始导出 CSV {self.contact.remark}")
origin_docx_path = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}" origin_docx_path = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}"
os.makedirs(origin_docx_path, exist_ok=True) os.makedirs(origin_docx_path, exist_ok=True)
filename = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}/{self.contact.remark}_utf8.csv" filename = f"{os.path.abspath('.')}/data/聊天记录/{self.contact.remark}/{self.contact.remark}_utf8.csv"

View File

@ -2,9 +2,10 @@ import binascii
import os.path import os.path
import sqlite3 import sqlite3
import threading import threading
import traceback
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from app.log import log from app.log import log, logger
from app.util.protocbuf.msg_pb2 import MessageBytesExtra from app.util.protocbuf.msg_pb2 import MessageBytesExtra
image_db_lock = threading.Lock() image_db_lock = threading.Lock()
@ -32,6 +33,13 @@ def get_md5_from_xml(content, type_="img"):
def decodeExtraBuf(extra_buf_content: bytes): def decodeExtraBuf(extra_buf_content: bytes):
if not extra_buf_content:
return {
"region": ('', '', ''),
"signature": '',
"telephone": '',
"gender": 0,
}
trunkName = { trunkName = {
b"\x46\xCF\x10\xC4": "个性签名", b"\x46\xCF\x10\xC4": "个性签名",
b"\xA4\xD9\x02\x4A": "国家", b"\xA4\xD9\x02\x4A": "国家",
@ -46,6 +54,7 @@ def decodeExtraBuf(extra_buf_content: bytes):
} }
res = {"手机号": ""} res = {"手机号": ""}
off = 0 off = 0
try:
for key in trunkName: for key in trunkName:
trunk_head = trunkName[key] trunk_head = trunkName[key]
try: try:
@ -66,13 +75,21 @@ def decodeExtraBuf(extra_buf_content: bytes):
strContent = extra_buf_content[off : off + lengthContent] strContent = extra_buf_content[off : off + lengthContent]
off += lengthContent off += lengthContent
res[trunk_head] = strContent.decode("utf-16").rstrip("\x00") res[trunk_head] = strContent.decode("utf-16").rstrip("\x00")
return { return {
"region": (res["国家"], res["省份"], res[""]), "region": (res["国家"], res["省份"], res[""]),
"signature": res["个性签名"], "signature": res["个性签名"],
"telephone": res["手机号"], "telephone": res["手机号"],
"gender": res["性别"], "gender": res["性别"],
} }
except:
logger.error(f'联系人解析错误:\n{traceback.format_exc()}')
return {
"region": ('', '', ''),
"signature": '',
"telephone": '',
"gender": 0,
}
def singleton(cls): def singleton(cls):

View File

@ -290,8 +290,9 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow, QCursorGif):
def close(self) -> bool: def close(self) -> bool:
close_db() close_db()
super().close()
self.contact_window.close() self.contact_window.close()
super().close()
self.exitSignal.emit(True) self.exitSignal.emit(True)

View File

@ -64,13 +64,15 @@ class ExportDialog(QDialog, Ui_Dialog):
self.comboBox_time.activated.connect(self.set_export_date) self.comboBox_time.activated.connect(self.set_export_date)
# 下面将输出重定向到textBrowser中 # 下面将输出重定向到textBrowser中
sys.stdout = EmittingStr(textWritten=self.outputWritten) sys.stdout = EmittingStr(textWritten=self.outputWritten)
sys.stderr = EmittingStr(textWritten=self.outputWritten) # sys.stderr = EmittingStr(textWritten=self.outputWritten)
scroll_bar = ScrollBar() scroll_bar = ScrollBar()
self.textBrowser.setVerticalScrollBar(scroll_bar) self.textBrowser.setVerticalScrollBar(scroll_bar)
self.export_choices = {"文本": True, "图片": True, "语音": False, "视频": False, "表情包": False, self.export_choices = {"文本": True, "图片": True, "语音": False, "视频": False, "表情包": False,
'音乐与音频': False, '分享卡片': False, '文件': False, '音乐与音频': False, '分享卡片': False, '文件': False,
'拍一拍等系统消息': True} # 定义导出的数据类型,默认全部选择 '拍一拍等系统消息': True} # 定义导出的数据类型,默认全部选择
self.setWindowTitle(title) self.setWindowTitle(title)
self.checkBox_word.setEnabled(False)
self.checkBox_word.setText('Docx(暂时不可用)')
self.resize(800, 600) self.resize(800, 600)
self.worker = None # 导出线程 self.worker = None # 导出线程
for export_type, default_state in self.export_choices.items(): for export_type, default_state in self.export_choices.items():

View File

@ -95,7 +95,7 @@ class Ui_Dialog(object):
self.textBrowser.setObjectName("textBrowser") self.textBrowser.setObjectName("textBrowser")
self.verticalLayout_3.addWidget(self.textBrowser) self.verticalLayout_3.addWidget(self.textBrowser)
self.progressBar = QtWidgets.QProgressBar(Dialog) self.progressBar = QtWidgets.QProgressBar(Dialog)
self.progressBar.setProperty("value", 24) self.progressBar.setProperty("value", 0)
self.progressBar.setObjectName("progressBar") self.progressBar.setObjectName("progressBar")
self.verticalLayout_3.addWidget(self.progressBar) self.verticalLayout_3.addWidget(self.progressBar)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
@ -127,7 +127,7 @@ class Ui_Dialog(object):
def retranslateUi(self, Dialog): def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog")) Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label_3.setText(_translate("Dialog", "导出过程中请不要退出")) self.label_3.setText(_translate("Dialog", "导出过程中请不要退出,为减少卡顿请尽量不要超过十个"))
self.btn_select_all.setText(_translate("Dialog", "全选")) self.btn_select_all.setText(_translate("Dialog", "全选"))
self.comboBox_time.setItemText(0, _translate("Dialog", "全部时间")) self.comboBox_time.setItemText(0, _translate("Dialog", "全部时间"))
self.comboBox_time.setItemText(1, _translate("Dialog", "最近三个月")) self.comboBox_time.setItemText(1, _translate("Dialog", "最近三个月"))

View File

@ -170,7 +170,7 @@ class Ui_Dialog(object):
self.label_ready.setObjectName("label_ready") self.label_ready.setObjectName("label_ready")
self.horizontalLayout.addWidget(self.label_ready) self.horizontalLayout.addWidget(self.label_ready)
self.progressBar = QtWidgets.QProgressBar(Dialog) self.progressBar = QtWidgets.QProgressBar(Dialog)
self.progressBar.setProperty("value", 50) self.progressBar.setProperty("value", 0)
self.progressBar.setObjectName("progressBar") self.progressBar.setObjectName("progressBar")
self.horizontalLayout.addWidget(self.progressBar) self.horizontalLayout.addWidget(self.progressBar)
self.verticalLayout.addLayout(self.horizontalLayout) self.verticalLayout.addLayout(self.horizontalLayout)