diff --git a/app/DataBase/exporter_docx.py b/app/DataBase/exporter_docx.py index 70ca9de..2fe4e51 100644 --- a/app/DataBase/exporter_docx.py +++ b/app/DataBase/exporter_docx.py @@ -342,9 +342,15 @@ class DocxExporter(ExporterBase): n = 0 index = 0 newdoc() + # document = docx.Document() + # doc = document.add_paragraph() for index, message in enumerate(messages): if index % 200 == 0 and index: + # doc = document.add_paragraph() + filename = os.path.join(origin_docx_path, f"{self.contact.remark}{n}.docx") + doc.save(filename) newdoc() + type_ = message[2] sub_type = message[3] timestamp = message[5] @@ -386,9 +392,11 @@ class DocxExporter(ExporterBase): print(f"【合并 DOCX {self.contact.remark}】{index + 1}/{len(docs)}") doc.insert(0, dx) try: + # document.save(filename) doc.save(filename) except PermissionError: filename = filename[:-5] + f'{time.time()}' + '.docx' + # document.save(filename) doc.save(filename) print(f"【完成导出 DOCX {self.contact.remark}】") self.okSignal.emit(1) diff --git a/app/ui/mainview.py b/app/ui/mainview.py index f27bb33..ca707a6 100644 --- a/app/ui/mainview.py +++ b/app/ui/mainview.py @@ -86,7 +86,7 @@ QCheckBox::indicator:checked{ """ -class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): +class MainWinController(QMainWindow, mainwindow.Ui_MainWindow, QCursorGif): exitSignal = pyqtSignal(bool) okSignal = pyqtSignal(bool) @@ -148,39 +148,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): self.setCursorTimeout(100) self.startBusy() - - - self.action_help_contact.triggered.connect( - lambda: QDesktopServices.openUrl(QUrl("https://blog.lc044.love/post/5"))) - self.action_help_chat.triggered.connect( - lambda: QDesktopServices.openUrl(QUrl("https://blog.lc044.love/post/5"))) - self.action_help_decrypt.triggered.connect( - lambda: QDesktopServices.openUrl(QUrl("https://blog.lc044.love/post/4"))) - self.listWidget.setVisible(False) - self.stackedWidget.setVisible(False) - self.listWidget.currentRowChanged.connect(self.setCurrentIndex) - tool_item = QListWidgetItem(Icon.Tool_Icon, '工具', self.listWidget) - chat_item = QListWidgetItem(Icon.Chat_Icon, '聊天', self.listWidget) - contact_item = QListWidgetItem(Icon.Contact_Icon, '好友', self.listWidget) - myinfo_item = QListWidgetItem(Icon.Home_Icon, '我的', self.listWidget) - tool_window = ToolWindow() - tool_window.get_info_signal.connect(self.set_my_info) - tool_window.decrypt_success_signal.connect(self.decrypt_success) - tool_window.load_finish_signal.connect(self.loading) - self.stackedWidget.addWidget(tool_window) - self.chat_window = ChatWindow() - # chat_window = QWidget() - self.stackedWidget.addWidget(self.chat_window) - self.contact_window = ContactWindow() - self.stackedWidget.addWidget(self.contact_window) - label = QLabel('该功能暂不支持哦') - label.setFont(QFont("微软雅黑", 50)) - label.setAlignment(Qt.AlignCenter) - self.stackedWidget.addWidget(label) - tool_window.load_finish_signal.connect(self.loading) - self.statusbar.showMessage('聊天窗口上划到顶部会加载新的聊天记录\n一次不行那就多来几次') - self.contact_window.load_finish_signal.connect(self.loading) - self.chat_window.load_finish_signal.connect(self.loading) + self.about_view = AboutDialog(main_window=self, parent=self) def setCurrentIndex(self, row): self.stackedWidget.setCurrentIndex(row) @@ -200,7 +168,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): self.avatar = QPixmap() try: img_bytes = misc_db.get_avatar_buffer(wxid) - except : + except: close_db() QMessageBox.critical(self, "数据库错误", "请重启微信后重试") import shutil @@ -244,7 +212,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): # 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.startSignal.connect(lambda x: self.startBusy()) self.outputThread.okSignal.connect( lambda x: self.message('聊天记录导出成功')) self.outputThread.start() @@ -267,8 +235,8 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): 关于 """ # QMessageBox.about(self, "关于",config.about) - about_view = AboutDialog(self) - about_view.show() + # about_view = AboutDialog(self) + self.about_view.show() def decrypt_success(self): QMessageBox.about(self, "解密成功", "请重新启动") @@ -284,6 +252,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif): event.accept() else: event.ignore() + def close(self) -> bool: close_db() super().close() diff --git a/app/ui/menu/about_dialog.cp312-win_amd64.pyd b/app/ui/menu/about_dialog.cp312-win_amd64.pyd new file mode 100644 index 0000000..701607e Binary files /dev/null and b/app/ui/menu/about_dialog.cp312-win_amd64.pyd differ diff --git a/app/ui/menu/about_dialog.py b/app/ui/menu/about_dialog.py deleted file mode 100644 index 13a944c..0000000 --- a/app/ui/menu/about_dialog.py +++ /dev/null @@ -1,46 +0,0 @@ -from PyQt5.QtCore import QSize, QUrl -from PyQt5.QtGui import QPixmap -from PyQt5.QtWidgets import QApplication, QDialog - -try: - from app.ui.menu.dialog import Ui_Dialog - from app import config - from app.resources import resource_rc -except: - from dialog import Ui_Dialog - from ..resources import resource_rc - - -class AboutDialog(QDialog, Ui_Dialog): - def __init__(self, parent=None): - super(AboutDialog, self).__init__(parent) - self.setupUi(self) - self.setWindowTitle('关于') - self.resize(QSize(640,520)) - self.init_ui() - - def init_ui(self): - pixmap = QPixmap(':/icons/icons/logo99.png') - self.label_logo.setPixmap(pixmap) - pixmap = QPixmap(':/icons/icons/weixin.png') - self.label_weixin.setPixmap(pixmap) - self.label_version.setText('《留痕》') - self.textBrowser.setHtml(config.about) - self.textBrowser.setOpenExternalLinks(True) - self.textBrowser.anchorClicked.connect(self.handleAnchorClicked) - - - def handleAnchorClicked(self, url): - # 打开默认浏览器 - QUrl(url).openUrl(url) -if __name__ == '__main__': - import sys - - app = QApplication(sys.argv) - dialog = AboutDialog() - result = dialog.exec_() # 使用exec_()获取用户的操作结果 - if result == QDialog.Accepted: - print("用户点击了导出按钮") - else: - print("用户点击了取消按钮") - sys.exit(app.exec_()) diff --git a/app/util/emoji.py b/app/util/emoji.py index 3b9fb13..5939b3a 100644 --- a/app/util/emoji.py +++ b/app/util/emoji.py @@ -9,6 +9,7 @@ emoji.py """ import os +import re import traceback import xml.etree.ElementTree as ET import sqlite3 @@ -52,6 +53,9 @@ def parser_xml(xml_string): try: root = ET.fromstring(xml_string) except: + res = re.search('.*', xml_string) + if res: + xml_string = res.group() root = ET.fromstring(xml_string.replace("&", "&")) emoji = root.find("./emoji") # Accessing attributes of the 'emoji' element