mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 19:02:17 +08:00
导出所有数据库的聊天记录
This commit is contained in:
parent
38080499cd
commit
9c7cb674f8
@ -4,17 +4,11 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="修复情感分析数值显示过长的bug">
|
||||
<change afterPath="$PROJECT_DIR$/app/data/icons/search.svg" afterDir="false" />
|
||||
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="新增聊天记录导出csv格式">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/DataBase/micro_msg.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/DataBase/micro_msg.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/DataBase/msg.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/DataBase/msg.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/DataBase/output_pc.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/DataBase/output_pc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/components/bubble_message.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/bubble_message.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/Icon.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/Icon.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/contactInfo.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/contact/contactInfo.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/contactUi.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/contact/contactUi.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/contactUi.ui" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/contact/contactUi.ui" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/contact_window.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/contact/contact_window.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/mainview.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/mainview.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -111,27 +105,6 @@
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.decrypt_window">
|
||||
<configuration name="CAvatar" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="WeChatMsg" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/components" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/components/CAvatar.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="decrypt_window" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="WeChatMsg" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
@ -237,13 +210,34 @@
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="WeChatMsg" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.decrypt_window" />
|
||||
<item itemvalue="Python.msg" />
|
||||
<item itemvalue="Python.test" />
|
||||
<item itemvalue="Python.main" />
|
||||
<item itemvalue="Python.misc" />
|
||||
<item itemvalue="Python.CAvatar" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@ -259,13 +253,6 @@
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1672848140146</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00016" summary="窗口切换,使用stackedWidget">
|
||||
<created>1680630659802</created>
|
||||
<option name="number" value="00016" />
|
||||
<option name="presentableId" value="LOCAL-00016" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1680630659802</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00017" summary="修复了Webengine横向小的问题">
|
||||
<created>1680670947385</created>
|
||||
<option name="number" value="00017" />
|
||||
@ -602,7 +589,14 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1700064404522</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="65" />
|
||||
<task id="LOCAL-00065" summary="新增聊天记录导出csv格式">
|
||||
<created>1700145601841</created>
|
||||
<option name="number" value="00065" />
|
||||
<option name="presentableId" value="LOCAL-00065" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1700145601841</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="66" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="UnknownFeatures">
|
||||
@ -638,7 +632,6 @@
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="用stackedWidget实现导航栏" />
|
||||
<MESSAGE value="修复部分bug" />
|
||||
<MESSAGE value="替换chat里的contact" />
|
||||
<MESSAGE value="增加中文路径提示" />
|
||||
@ -663,7 +656,8 @@
|
||||
<MESSAGE value="显示联系人信息" />
|
||||
<MESSAGE value="修复db文件空格路径的bug" />
|
||||
<MESSAGE value="修复情感分析数值显示过长的bug" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="修复情感分析数值显示过长的bug" />
|
||||
<MESSAGE value="新增聊天记录导出csv格式" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="新增聊天记录导出csv格式" />
|
||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
|
||||
</component>
|
||||
|
@ -37,5 +37,11 @@ def get_contact():
|
||||
return result
|
||||
|
||||
|
||||
def close():
|
||||
global DB
|
||||
if DB:
|
||||
DB.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
get_contact()
|
||||
|
@ -1,24 +1,40 @@
|
||||
import os.path
|
||||
import re
|
||||
import sqlite3
|
||||
|
||||
DB = None
|
||||
cursor = None
|
||||
msg_path = "./app/Database/Msg/MSG0.db"
|
||||
DB = []
|
||||
cursor = []
|
||||
msg_root_path = "./app/Database/Msg/"
|
||||
# misc_path = './Msg/Misc.db'
|
||||
if os.path.exists(msg_path):
|
||||
DB = sqlite3.connect(msg_path, check_same_thread=False)
|
||||
if os.path.exists(msg_root_path):
|
||||
for root, dirs, files in os.walk(msg_root_path):
|
||||
for file in files:
|
||||
if re.match('^MSG[0-9]+\.db$', file):
|
||||
# print('ok', file)
|
||||
msg_path = os.path.join(msg_root_path, file)
|
||||
DB0 = sqlite3.connect(msg_path, check_same_thread=False)
|
||||
# '''创建游标'''
|
||||
cursor = DB.cursor()
|
||||
cursor0 = DB0.cursor()
|
||||
DB.append(DB0)
|
||||
cursor.append(cursor0)
|
||||
|
||||
|
||||
def init_database():
|
||||
global DB
|
||||
global cursor
|
||||
if not DB:
|
||||
if os.path.exists(msg_path):
|
||||
DB = sqlite3.connect(msg_path, check_same_thread=False)
|
||||
if os.path.exists(msg_root_path):
|
||||
for root, dirs, files in os.walk(msg_root_path):
|
||||
for file in files:
|
||||
# print(file)
|
||||
if re.match('^MSG[0-9]+\.db$', file):
|
||||
print('ok', file)
|
||||
msg_path = os.path.join(msg_root_path, file)
|
||||
DB0 = sqlite3.connect(msg_path, check_same_thread=False)
|
||||
# '''创建游标'''
|
||||
cursor = DB.cursor()
|
||||
cursor0 = DB0.cursor()
|
||||
DB.append(DB0)
|
||||
cursor.append(cursor0)
|
||||
|
||||
|
||||
def get_messages(username_):
|
||||
@ -28,15 +44,25 @@ def get_messages(username_):
|
||||
where StrTalker=?
|
||||
order by CreateTime
|
||||
'''
|
||||
cursor.execute(sql, [username_])
|
||||
result_ = cursor.fetchall()
|
||||
return result_
|
||||
result = []
|
||||
for cur in cursor:
|
||||
cur.execute(sql, [username_])
|
||||
result_ = cur.fetchall()
|
||||
# print(len(result))
|
||||
result += result_
|
||||
result.sort(key=lambda x: x[5])
|
||||
return result
|
||||
|
||||
|
||||
def close():
|
||||
for db in DB:
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from pprint import pprint
|
||||
|
||||
msg_path = './Msg/MSG3.db'
|
||||
msg_root_path = './Msg/'
|
||||
init_database()
|
||||
|
||||
username = 'wxid_0o18ef858vnu22'
|
||||
|
@ -13,6 +13,7 @@ from PyQt5.QtCore import *
|
||||
from PyQt5.QtWidgets import *
|
||||
|
||||
from app import config
|
||||
from app.DataBase import msg
|
||||
from app.Ui.Icon import Icon
|
||||
from . import mainwindow
|
||||
from .contact import ContactWindow
|
||||
@ -112,3 +113,9 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow):
|
||||
f"QQ交流群:{config.contact}\n"
|
||||
"地址:https://github.com/LC044/WeChatMsg"
|
||||
)
|
||||
|
||||
def close(self) -> bool:
|
||||
del self.listWidget
|
||||
del self.stackedWidget
|
||||
msg.close()
|
||||
self.contact_window.close()
|
||||
|
Loading…
Reference in New Issue
Block a user