mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-23 03:22:17 +08:00
Merge branch 'LC044:master' into master
This commit is contained in:
commit
380c9cc1d0
@ -47,7 +47,7 @@ class MicroMsg:
|
|||||||
FROM Contact
|
FROM Contact
|
||||||
INNER JOIN ContactHeadImgUrl ON Contact.UserName = ContactHeadImgUrl.usrName
|
INNER JOIN ContactHeadImgUrl ON Contact.UserName = ContactHeadImgUrl.usrName
|
||||||
LEFT JOIN ContactLabel ON Contact.LabelIDList = ContactLabel.LabelId
|
LEFT JOIN ContactLabel ON Contact.LabelIDList = ContactLabel.LabelId
|
||||||
WHERE (Type!=4)
|
WHERE (Type!=4 AND VerifyFlag=0)
|
||||||
AND NickName != ''
|
AND NickName != ''
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
|
@ -99,6 +99,7 @@ class ChatWindow(QWidget, Ui_Form):
|
|||||||
self.listWidget.setCurrentRow(index)
|
self.listWidget.setCurrentRow(index)
|
||||||
|
|
||||||
def show_chat(self, contact):
|
def show_chat(self, contact):
|
||||||
|
# return
|
||||||
self.contacts[0].append(contact.remark)
|
self.contacts[0].append(contact.remark)
|
||||||
self.contacts[1].append(contact.nickName)
|
self.contacts[1].append(contact.nickName)
|
||||||
contact_item = ContactQListWidgetItem(contact.remark, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
|
contact_item = ContactQListWidgetItem(contact.remark, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'contactInfoUi.ui'
|
# Form implementation generated from reading ui file 'contactInfoUi.ui'
|
||||||
#
|
#
|
||||||
# Created by: PyQt5 UI code generator 5.15.7
|
# Created by: PyQt5 UI code generator 5.15.10
|
||||||
#
|
#
|
||||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||||
# run again. Do not edit this file unless you know what you are doing.
|
# run again. Do not edit this file unless you know what you are doing.
|
||||||
@ -20,14 +20,6 @@ class Ui_Form(object):
|
|||||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
||||||
self.horizontalLayout_3.setSpacing(0)
|
self.horizontalLayout_3.setSpacing(0)
|
||||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||||
self.label_remark = QtWidgets.QLabel(Form)
|
|
||||||
self.label_remark.setMaximumSize(QtCore.QSize(120, 100))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setPointSize(12)
|
|
||||||
self.label_remark.setFont(font)
|
|
||||||
self.label_remark.setText("")
|
|
||||||
self.label_remark.setObjectName("label_remark")
|
|
||||||
self.horizontalLayout_3.addWidget(self.label_remark)
|
|
||||||
self.btn_analysis = QtWidgets.QPushButton(Form)
|
self.btn_analysis = QtWidgets.QPushButton(Form)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@ -62,6 +54,7 @@ class Ui_Form(object):
|
|||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.btn_back.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.btn_back.sizePolicy().hasHeightForWidth())
|
||||||
self.btn_back.setSizePolicy(sizePolicy)
|
self.btn_back.setSizePolicy(sizePolicy)
|
||||||
|
self.btn_back.setText("")
|
||||||
self.btn_back.setFlat(False)
|
self.btn_back.setFlat(False)
|
||||||
self.btn_back.setObjectName("btn_back")
|
self.btn_back.setObjectName("btn_back")
|
||||||
self.horizontalLayout_3.addWidget(self.btn_back)
|
self.horizontalLayout_3.addWidget(self.btn_back)
|
||||||
@ -81,7 +74,6 @@ class Ui_Form(object):
|
|||||||
self.toolButton_output.setArrowType(QtCore.Qt.NoArrow)
|
self.toolButton_output.setArrowType(QtCore.Qt.NoArrow)
|
||||||
self.toolButton_output.setObjectName("toolButton_output")
|
self.toolButton_output.setObjectName("toolButton_output")
|
||||||
self.horizontalLayout_3.addWidget(self.toolButton_output)
|
self.horizontalLayout_3.addWidget(self.toolButton_output)
|
||||||
self.horizontalLayout_3.setStretch(0, 1)
|
|
||||||
self.verticalLayout.addLayout(self.horizontalLayout_3)
|
self.verticalLayout.addLayout(self.horizontalLayout_3)
|
||||||
self.stackedWidget = QtWidgets.QStackedWidget(Form)
|
self.stackedWidget = QtWidgets.QStackedWidget(Form)
|
||||||
self.stackedWidget.setObjectName("stackedWidget")
|
self.stackedWidget.setObjectName("stackedWidget")
|
||||||
@ -103,5 +95,4 @@ class Ui_Form(object):
|
|||||||
self.btn_analysis.setText(_translate("Form", "统计信息"))
|
self.btn_analysis.setText(_translate("Form", "统计信息"))
|
||||||
self.btn_emotion.setText(_translate("Form", "情感分析"))
|
self.btn_emotion.setText(_translate("Form", "情感分析"))
|
||||||
self.btn_report.setText(_translate("Form", "年度报告"))
|
self.btn_report.setText(_translate("Form", "年度报告"))
|
||||||
self.btn_back.setText(_translate("Form", "退出"))
|
|
||||||
self.toolButton_output.setText(_translate("Form", "导出聊天记录"))
|
self.toolButton_output.setText(_translate("Form", "导出聊天记录"))
|
||||||
|
@ -119,6 +119,7 @@ class ContactWindow(QWidget, Ui_Form):
|
|||||||
@param contact:联系人对象
|
@param contact:联系人对象
|
||||||
@return:
|
@return:
|
||||||
"""
|
"""
|
||||||
|
# return
|
||||||
self.contacts[0].append(contact.remark)
|
self.contacts[0].append(contact.remark)
|
||||||
self.contacts[1].append(contact.nickName)
|
self.contacts[1].append(contact.nickName)
|
||||||
contact_item = ContactQListWidgetItem(contact.remark, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
|
contact_item = ContactQListWidgetItem(contact.remark, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
|
||||||
|
@ -14,11 +14,10 @@ from PyQt5.QtCore import pyqtSignal, QUrl, Qt, QThread, QSize
|
|||||||
from PyQt5.QtGui import QPixmap, QFont, QDesktopServices, QIcon
|
from PyQt5.QtGui import QPixmap, QFont, QDesktopServices, QIcon
|
||||||
from PyQt5.QtWidgets import QMainWindow, QLabel, QListWidgetItem, QMessageBox
|
from PyQt5.QtWidgets import QMainWindow, QLabel, QListWidgetItem, QMessageBox
|
||||||
|
|
||||||
from app import config
|
from app.DataBase import misc_db, micro_msg_db, close_db
|
||||||
from app.DataBase import msg_db, misc_db, micro_msg_db, hard_link_db, close_db
|
|
||||||
from app.ui.Icon import Icon
|
from app.ui.Icon import Icon
|
||||||
from . import mainwindow
|
from . import mainwindow
|
||||||
from .about_dialog import AboutDialog
|
from app.ui.menu.about_dialog import AboutDialog
|
||||||
from .chat import ChatWindow
|
from .chat import ChatWindow
|
||||||
from .contact import ContactWindow
|
from .contact import ContactWindow
|
||||||
from .tool.tool_window import ToolWindow
|
from .tool.tool_window import ToolWindow
|
||||||
@ -121,6 +120,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def init_ui(self):
|
def init_ui(self):
|
||||||
|
self.startBusy()
|
||||||
self.menu_output.setIcon(Icon.Output)
|
self.menu_output.setIcon(Icon.Output)
|
||||||
self.action_output_CSV.setIcon(Icon.ToCSV)
|
self.action_output_CSV.setIcon(Icon.ToCSV)
|
||||||
self.action_output_CSV.triggered.connect(self.output)
|
self.action_output_CSV.triggered.connect(self.output)
|
||||||
@ -199,6 +199,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif):
|
|||||||
|
|
||||||
def stop_loading(self, a0):
|
def stop_loading(self, a0):
|
||||||
self.label.setVisible(False)
|
self.label.setVisible(False)
|
||||||
|
self.stopBusy()
|
||||||
|
|
||||||
def loading(self, a0):
|
def loading(self, a0):
|
||||||
self.load_num += 1
|
self.load_num += 1
|
||||||
@ -208,6 +209,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow,QCursorGif):
|
|||||||
self.okSignal.emit(True)
|
self.okSignal.emit(True)
|
||||||
self.listWidget.setVisible(True)
|
self.listWidget.setVisible(True)
|
||||||
self.stackedWidget.setVisible(True)
|
self.stackedWidget.setVisible(True)
|
||||||
|
self.stopBusy()
|
||||||
if self.load_flag:
|
if self.load_flag:
|
||||||
self.listWidget.setCurrentRow(1)
|
self.listWidget.setCurrentRow(1)
|
||||||
self.stackedWidget.setCurrentIndex(1)
|
self.stackedWidget.setCurrentIndex(1)
|
||||||
|
0
app/ui/menu/__init__.py
Normal file
0
app/ui/menu/__init__.py
Normal file
@ -3,7 +3,7 @@ from PyQt5.QtGui import QPixmap
|
|||||||
from PyQt5.QtWidgets import QApplication, QDialog
|
from PyQt5.QtWidgets import QApplication, QDialog
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .dialog import Ui_Dialog
|
from app.ui.menu.dialog import Ui_Dialog
|
||||||
from app import config
|
from app import config
|
||||||
from app.resources import resource_rc
|
from app.resources import resource_rc
|
||||||
except:
|
except:
|
@ -12,7 +12,6 @@ from app.util.protocbuf.msg_pb2 import MessageBytesExtra
|
|||||||
from ..util.file import get_file
|
from ..util.file import get_file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def decompress_CompressContent(data):
|
def decompress_CompressContent(data):
|
||||||
"""
|
"""
|
||||||
解压缩Msg:CompressContent内容
|
解压缩Msg:CompressContent内容
|
||||||
@ -132,47 +131,50 @@ def music_share(data: bytes):
|
|||||||
|
|
||||||
|
|
||||||
def share_card(bytesExtra, compress_content_):
|
def share_card(bytesExtra, compress_content_):
|
||||||
xml = decompress_CompressContent(compress_content_)
|
title, des, url, show_display_name, thumbnail, app_logo = '', '', '', '', '', ''
|
||||||
root = ET.XML(xml)
|
|
||||||
appmsg = root.find('appmsg')
|
|
||||||
title = appmsg.find('title').text
|
|
||||||
try:
|
try:
|
||||||
des = appmsg.find('des').text
|
xml = decompress_CompressContent(compress_content_)
|
||||||
except:
|
root = ET.XML(xml)
|
||||||
des = ''
|
appmsg = root.find('appmsg')
|
||||||
url = appmsg.find('url').text
|
title = appmsg.find('title').text
|
||||||
appinfo = root.find('appinfo')
|
try:
|
||||||
show_display_name = appmsg.find('sourcedisplayname')
|
des = appmsg.find('des').text
|
||||||
sourceusername = appmsg.find('sourceusername')
|
except:
|
||||||
if show_display_name is not None:
|
des = ''
|
||||||
show_display_name = show_display_name.text
|
url = appmsg.find('url').text
|
||||||
else:
|
appinfo = root.find('appinfo')
|
||||||
if appinfo is not None:
|
show_display_name = appmsg.find('sourcedisplayname')
|
||||||
show_display_name = appinfo.find('appname').text
|
sourceusername = appmsg.find('sourceusername')
|
||||||
msg_bytes = MessageBytesExtra()
|
if show_display_name is not None:
|
||||||
msg_bytes.ParseFromString(bytesExtra)
|
show_display_name = show_display_name.text
|
||||||
app_logo = ''
|
else:
|
||||||
thumbnail = ''
|
if appinfo is not None:
|
||||||
for tmp in msg_bytes.message2:
|
show_display_name = appinfo.find('appname').text
|
||||||
if tmp.field1 == 3:
|
msg_bytes = MessageBytesExtra()
|
||||||
thumbnail = tmp.field2
|
msg_bytes.ParseFromString(bytesExtra)
|
||||||
thumbnail = "\\".join(thumbnail.split('\\')[1:])
|
app_logo = ''
|
||||||
if tmp.field2 == 4:
|
thumbnail = ''
|
||||||
app_logo = tmp.field2
|
for tmp in msg_bytes.message2:
|
||||||
app_logo = "\\".join(app_logo.split('\\')[1:])
|
if tmp.field1 == 3:
|
||||||
if sourceusername is not None:
|
thumbnail = tmp.field2
|
||||||
from app.DataBase import micro_msg_db # 放上面会导致循环依赖
|
thumbnail = "\\".join(thumbnail.split('\\')[1:])
|
||||||
contact = micro_msg_db.get_contact_by_username(sourceusername.text)
|
if tmp.field2 == 4:
|
||||||
if contact:
|
app_logo = tmp.field2
|
||||||
app_logo = contact[7]
|
app_logo = "\\".join(app_logo.split('\\')[1:])
|
||||||
return {
|
if sourceusername is not None:
|
||||||
'title': escape_js_and_html(title),
|
from app.DataBase import micro_msg_db # 放上面会导致循环依赖
|
||||||
'description': escape_js_and_html(des),
|
contact = micro_msg_db.get_contact_by_username(sourceusername.text)
|
||||||
'url': url,
|
if contact:
|
||||||
'app_name': escape_js_and_html(show_display_name),
|
app_logo = contact[7]
|
||||||
'thumbnail': thumbnail,
|
finally:
|
||||||
'app_logo': app_logo
|
return {
|
||||||
}
|
'title': escape_js_and_html(title),
|
||||||
|
'description': escape_js_and_html(des),
|
||||||
|
'url': url,
|
||||||
|
'app_name': escape_js_and_html(show_display_name),
|
||||||
|
'thumbnail': thumbnail,
|
||||||
|
'app_logo': app_logo
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_website_name(url):
|
def get_website_name(url):
|
||||||
@ -269,5 +271,6 @@ def format_bytes(size):
|
|||||||
if size < 1024 or unit_index >= len(units) - 1:
|
if size < 1024 or unit_index >= len(units) - 1:
|
||||||
return size, unit_index
|
return size, unit_index
|
||||||
return convert_bytes(size / 1024, unit_index + 1)
|
return convert_bytes(size / 1024, unit_index + 1)
|
||||||
|
|
||||||
final_size, final_unit_index = convert_bytes(size, 0)
|
final_size, final_unit_index = convert_bytes(size, 0)
|
||||||
return f"{final_size:.2f} {units[final_unit_index]}"
|
return f"{final_size:.2f} {units[final_unit_index]}"
|
||||||
|
Loading…
Reference in New Issue
Block a user