From 4fe4bfd47cc7878c6de303a3b4783d9bf5c6bd8a Mon Sep 17 00:00:00 2001 From: xaoyaoo Date: Tue, 13 Aug 2024 17:37:07 +0800 Subject: [PATCH] Media_add_index --- pywxdump/db/__init__.py | 2 ++ pywxdump/db/dbMedia.py | 7 +++++++ pywxdump/db/dbSns.py | 31 +++++++++++-------------------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pywxdump/db/__init__.py b/pywxdump/db/__init__.py index df457c1..790511c 100644 --- a/pywxdump/db/__init__.py +++ b/pywxdump/db/__init__.py @@ -27,9 +27,11 @@ class DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandl def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + # 加速查询索引 self.Micro_add_index() self.Msg_add_index() self.PublicMsg_add_index() + self.Media_add_index() def get_user(self, word=None, wxids=None, labels=None): """ diff --git a/pywxdump/db/dbMedia.py b/pywxdump/db/dbMedia.py index 6599f9e..e8f9241 100644 --- a/pywxdump/db/dbMedia.py +++ b/pywxdump/db/dbMedia.py @@ -13,6 +13,13 @@ class MediaHandler(DatabaseBase): _class_name = "MediaMSG" Media_required_tables = ["Media"] + def Media_add_index(self): + """ + 添加索引, 加快查询速度 + """ + if self.tables_exist("Media"): + self.execute("CREATE INDEX IF NOT EXISTS MsgSvrID ON Media(Reserved0)") + def get_audio(self, MsgSvrID, is_play=False, is_wave=False, save_path=None, rate=24000): if not self.tables_exist("Media"): return False diff --git a/pywxdump/db/dbSns.py b/pywxdump/db/dbSns.py index ba82d4c..f4621fc 100644 --- a/pywxdump/db/dbSns.py +++ b/pywxdump/db/dbSns.py @@ -9,23 +9,14 @@ from .dbbase import DatabaseBase from .utils import silk2audio -class MediaHandler(DatabaseBase): - _class_name = "MediaMSG" - Media_required_tables = ["Media"] - - def get_audio(self, MsgSvrID, is_play=False, is_wave=False, save_path=None, rate=24000): - if not self.tables_exist("Media"): - return False - - sql = "select Buf from Media where Reserved0=? " - DBdata = self.execute(sql, (MsgSvrID,)) - if not DBdata: - return False - if len(DBdata) == 0: - return False - data = DBdata[0][0] # [1:] + b'\xFF\xFF' - try: - pcm_data = silk2audio(buf_data=data, is_play=is_play, is_wave=is_wave, save_path=save_path, rate=rate) - return pcm_data - except Exception as e: - return False +class SnsHandler(DatabaseBase): + _class_name = "Sns" + Media_required_tables = ["AdFeedsV8", "FeedsV20", "CommentV20", "NotificationV7", "SnsConfigV20", "SnsFailureV5", + "SnsGroupInfoV5", "SnsNoNotifyV5"] + """ + FeedsV20:朋友圈的XML数据 + CommentV20:朋友圈点赞或评论记录 + NotificationV7:朋友圈通知 + SnsConfigV20:一些配置信息,能读懂的是其中有你的朋友圈背景图 + SnsGroupInfoV5:猜测是旧版微信朋友圈可见范围的可见或不可见名单 + """