mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 10:52:18 +08:00
修复找不到wx文件夹的问题#124 #115
This commit is contained in:
parent
e9d7b1b7c9
commit
858fc306b4
@ -1,4 +1,6 @@
|
|||||||
import os.path
|
import os.path
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
from os import system
|
from os import system
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import threading
|
import threading
|
||||||
@ -8,7 +10,14 @@ from pilk import decode
|
|||||||
lock = threading.Lock()
|
lock = threading.Lock()
|
||||||
db_path = "./app/Database/Msg/MediaMSG.db"
|
db_path = "./app/Database/Msg/MediaMSG.db"
|
||||||
|
|
||||||
|
def get_ffmpeg_path():
|
||||||
|
# 获取打包后的资源目录
|
||||||
|
resource_dir = getattr(sys, '_MEIPASS', os.path.abspath(os.path.dirname(__file__)))
|
||||||
|
|
||||||
|
# 构建 FFmpeg 可执行文件的路径
|
||||||
|
ffmpeg_path = os.path.join(resource_dir, 'app', 'resources', 'ffmpeg.exe')
|
||||||
|
|
||||||
|
return ffmpeg_path
|
||||||
def singleton(cls):
|
def singleton(cls):
|
||||||
_instance = {}
|
_instance = {}
|
||||||
|
|
||||||
@ -64,8 +73,18 @@ class MediaMsg:
|
|||||||
f.write(buf)
|
f.write(buf)
|
||||||
# open(silk_path, "wb").write()
|
# open(silk_path, "wb").write()
|
||||||
decode(silk_path, pcm_path, 44100)
|
decode(silk_path, pcm_path, 44100)
|
||||||
cmd = f'''{os.path.join(os.getcwd(),'app','resources','ffmpeg.exe')} -loglevel quiet -y -f s16le -i {pcm_path} -ar 44100 -ac 1 {mp3_path}'''
|
try:
|
||||||
system(cmd)
|
# 调用系统上的 ffmpeg 可执行文件
|
||||||
|
# 获取 FFmpeg 可执行文件的路径
|
||||||
|
ffmpeg_path = get_ffmpeg_path()
|
||||||
|
# 调用 FFmpeg
|
||||||
|
# subprocess.run([ffmpeg_path, f'''-loglevel quiet -y -f s16le -i {pcm_path} -ar 44100 -ac 1 {mp3_path}'''], check=True)
|
||||||
|
cmd = f'''{get_ffmpeg_path()} -loglevel quiet -y -f s16le -i {pcm_path} -ar 44100 -ac 1 {mp3_path}'''
|
||||||
|
system(cmd)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
cmd = f'''{os.path.join(os.getcwd(),'app','resources','ffmpeg.exe')} -loglevel quiet -y -f s16le -i {pcm_path} -ar 44100 -ac 1 {mp3_path}'''
|
||||||
|
system(cmd)
|
||||||
system(f'del {silk_path}')
|
system(f'del {silk_path}')
|
||||||
system(f'del {pcm_path}')
|
system(f'del {pcm_path}')
|
||||||
print(mp3_path)
|
print(mp3_path)
|
||||||
|
@ -247,6 +247,11 @@ class ChildThread(QThread):
|
|||||||
doc.write(
|
doc.write(
|
||||||
f'''{{ type:34, text:'{audio_path}',is_send:{is_send},avatar_path:'{avatar}',voice_to_text:'{voice_to_text}'}},'''
|
f'''{{ type:34, text:'{audio_path}',is_send:{is_send},avatar_path:'{avatar}',voice_to_text:'{voice_to_text}'}},'''
|
||||||
)
|
)
|
||||||
|
if self.output_type == Output.TXT:
|
||||||
|
name = '你' if is_send else self.contact.remark
|
||||||
|
doc.write(
|
||||||
|
f'''{str_time} {name}\n[语音]\n\n'''
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def emoji(self, doc, message):
|
def emoji(self, doc, message):
|
||||||
@ -314,11 +319,6 @@ class ChildThread(QThread):
|
|||||||
elif self.output_type==Output.TXT:
|
elif self.output_type==Output.TXT:
|
||||||
name = '你' if is_send else self.contact.remark
|
name = '你' if is_send else self.contact.remark
|
||||||
if refer_msg:
|
if refer_msg:
|
||||||
referText = f"{refer_msg.get('displayname')}:{refer_msg.get('content')}"
|
|
||||||
emojiText = findall(r"(\[.+?\])", referText)
|
|
||||||
for emoji_text in emojiText:
|
|
||||||
if emoji_text in emoji:
|
|
||||||
referText = referText.replace(emoji_text, emoji[emoji_text])
|
|
||||||
doc.write(
|
doc.write(
|
||||||
f'''{str_time} {name}\n{content.get('title')}\n引用:{refer_msg.get('displayname')}:{refer_msg.get('content')}\n\n'''
|
f'''{str_time} {name}\n{content.get('title')}\n引用:{refer_msg.get('displayname')}:{refer_msg.get('content')}\n\n'''
|
||||||
)
|
)
|
||||||
@ -461,6 +461,8 @@ class ChildThread(QThread):
|
|||||||
self.text(f, message)
|
self.text(f, message)
|
||||||
elif type_ == 3 and self.message_types.get(type_):
|
elif type_ == 3 and self.message_types.get(type_):
|
||||||
self.image(f, message)
|
self.image(f, message)
|
||||||
|
elif type_ == 34 and self.message_types.get(type_):
|
||||||
|
self.audio(f, message)
|
||||||
elif type_ == 43 and self.message_types.get(type_):
|
elif type_ == 43 and self.message_types.get(type_):
|
||||||
self.video(f, message)
|
self.video(f, message)
|
||||||
elif type_ == 47 and self.message_types.get(type_):
|
elif type_ == 47 and self.message_types.get(type_):
|
||||||
|
@ -107,15 +107,29 @@ def get_info_wxid(h_process):
|
|||||||
def get_info_filePath(wxid="all"):
|
def get_info_filePath(wxid="all"):
|
||||||
if not wxid:
|
if not wxid:
|
||||||
return "None"
|
return "None"
|
||||||
|
w_dir = "MyDocument:"
|
||||||
|
is_w_dir = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user_profile = os.environ.get("USERPROFILE")
|
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Tencent\WeChat", 0, winreg.KEY_READ)
|
||||||
path_3ebffe94 = os.path.join(user_profile, "AppData", "Roaming", "Tencent", "WeChat", "All Users", "config",
|
value, _ = winreg.QueryValueEx(key, "FileSavePath")
|
||||||
"3ebffe94.ini")
|
winreg.CloseKey(key)
|
||||||
with open(path_3ebffe94, "r", encoding="utf-8") as f:
|
w_dir = value
|
||||||
w_dir = f.read()
|
is_w_dir = True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
w_dir = "MyDocument:"
|
w_dir = "MyDocument:"
|
||||||
|
|
||||||
|
if not is_w_dir:
|
||||||
|
try:
|
||||||
|
user_profile = os.environ.get("USERPROFILE")
|
||||||
|
path_3ebffe94 = os.path.join(user_profile, "AppData", "Roaming", "Tencent", "WeChat", "All Users", "config",
|
||||||
|
"3ebffe94.ini")
|
||||||
|
with open(path_3ebffe94, "r", encoding="utf-8") as f:
|
||||||
|
w_dir = f.read()
|
||||||
|
is_w_dir = True
|
||||||
|
except Exception as e:
|
||||||
|
w_dir = "MyDocument:"
|
||||||
|
|
||||||
if w_dir == "MyDocument:":
|
if w_dir == "MyDocument:":
|
||||||
try:
|
try:
|
||||||
# 打开注册表路径
|
# 打开注册表路径
|
||||||
@ -154,6 +168,8 @@ def get_key(db_path, addr_len):
|
|||||||
return key_bytes
|
return key_bytes
|
||||||
|
|
||||||
def verify_key(key, wx_db_path):
|
def verify_key(key, wx_db_path):
|
||||||
|
if not wx_db_path:
|
||||||
|
return True
|
||||||
KEY_SIZE = 32
|
KEY_SIZE = 32
|
||||||
DEFAULT_PAGESIZE = 4096
|
DEFAULT_PAGESIZE = 4096
|
||||||
DEFAULT_ITER = 64000
|
DEFAULT_ITER = 64000
|
||||||
|
@ -34,7 +34,7 @@ class ExportDialog(QDialog):
|
|||||||
self.export_choices = {"文本": True, "图片": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
self.export_choices = {"文本": True, "图片": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
||||||
elif file_type == 'txt':
|
elif file_type == 'txt':
|
||||||
self.export_type = Output.TXT
|
self.export_type = Output.TXT
|
||||||
self.export_choices = {"文本": True, "图片": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
self.export_choices = {"文本": True, "图片": True, "语音": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
||||||
else:
|
else:
|
||||||
self.export_choices = {"文本": True, "图片": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
self.export_choices = {"文本": True, "图片": True, "视频": True, "表情包": True} # 定义导出的数据类型,默认全部选择
|
||||||
self.setWindowTitle(title)
|
self.setWindowTitle(title)
|
||||||
|
Loading…
Reference in New Issue
Block a user