diff --git a/pywxdump/api/remote_server.py b/pywxdump/api/remote_server.py index aacc2a2..7e50fdb 100644 --- a/pywxdump/api/remote_server.py +++ b/pywxdump/api/remote_server.py @@ -268,7 +268,7 @@ def get_video(videoPath): def get_audio(savePath): my_wxid = get_conf(g.caf, g.at, "last") if not my_wxid: return ReJson(1001, body="my_wxid is required") - merge_path = get_conf(g.caf, my_wxid, "merge_path") + db_config = get_conf(g.caf, my_wxid, "db_config") savePath = os.path.join(g.work_path, my_wxid, "audio", savePath) # 这个是从url中获取的 if os.path.exists(savePath): @@ -282,8 +282,8 @@ def get_audio(savePath): if not os.path.exists(os.path.dirname(savePath)): os.makedirs(os.path.dirname(savePath)) - parsing_media_msg = MediaHandler(merge_path) - wave_data = parsing_media_msg.get_audio(MsgSvrID, is_play=False, is_wave=True, save_path=savePath, rate=24000) + db = DBHandler(db_config) + wave_data = db.get_audio(MsgSvrID, is_play=False, is_wave=True, save_path=savePath, rate=24000) if not wave_data: return ReJson(1001, body="wave_data is required") diff --git a/pywxdump/db/__init__.py b/pywxdump/db/__init__.py index 1d2a3c4..b8145e2 100644 --- a/pywxdump/db/__init__.py +++ b/pywxdump/db/__init__.py @@ -35,6 +35,13 @@ class DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandl self.OpenIMMedia_exist = self.OpenIMMedia_tables_exist() self.Favorite_exist = self.Favorite_tables_exist() + if self.MSG_exist: # 添加索引 StrTalker + self.Msg_add_index() + if self.PublicMsg_exist: # 添加索引 StrTalker + self.PublicMsg_add_index() + if self.Micro_exist: # 添加索引 StrTalker + self.Micro_add_index() + # print(self.MSG_exist, self.Micro_exist, self.Media_exist, self.OpenIMContact_exist, self.PublicMsg_exist, # self.OpenIMMedia_exist, self.Favorite_exist) diff --git a/pywxdump/db/dbMSG.py b/pywxdump/db/dbMSG.py index 3a06e5a..d80c476 100644 --- a/pywxdump/db/dbMSG.py +++ b/pywxdump/db/dbMSG.py @@ -29,6 +29,18 @@ class MsgHandler(DatabaseBase): """ return self.check_tables_exist(self.MSG_required_tables) + def Msg_add_index(self): + """ + 添加索引,加快查询速度 + """ + # 检查是否存在索引 + sql = "CREATE INDEX IF NOT EXISTS idx_MSG_StrTalker ON MSG(StrTalker);" + self.execute(sql) + sql = "CREATE INDEX IF NOT EXISTS idx_MSG_CreateTime ON MSG(CreateTime);" + self.execute(sql) + sql = "CREATE INDEX IF NOT EXISTS idx_MSG_StrTalker_CreateTime ON MSG(StrTalker, CreateTime);" + self.execute(sql) + @db_error def get_msg_count(self, wxids: list = ""): """ diff --git a/pywxdump/db/dbMicro.py b/pywxdump/db/dbMicro.py index 9d3027e..171ddba 100644 --- a/pywxdump/db/dbMicro.py +++ b/pywxdump/db/dbMicro.py @@ -24,6 +24,33 @@ class MicroHandler(DatabaseBase): """ return self.check_tables_exist(self.Micro_required_tables) + def Micro_add_index(self): + """ + 添加索引, 加快查询速度 + """ + # 为 Session 表添加索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_Session_strUsrName_nTime ON Session(strUsrName, nTime);") + self.execute("CREATE INDEX IF NOT EXISTS idx_Session_nOrder ON Session(nOrder);") + + # 为 Contact 表添加索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_Contact_UserName ON Contact(UserName);") + + # 为 ContactHeadImgUrl 表添加索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_ContactHeadImgUrl_usrName ON ContactHeadImgUrl(usrName);") + + # 为 ChatInfo 表添加索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_ChatInfo_Username_LastReadedCreateTime " + "ON ChatInfo(Username, LastReadedCreateTime);") + self.execute("CREATE INDEX IF NOT EXISTS idx_ChatInfo_LastReadedCreateTime ON ChatInfo(LastReadedCreateTime);") + + # 为 Contact 表添加复合索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_Contact_search " + "ON Contact(UserName, NickName, Remark, Alias, QuanPin, PYInitial, RemarkQuanPin, RemarkPYInitial);") + + # 为 ChatRoom 和 ChatRoomInfo 表添加索引 + self.execute("CREATE INDEX IF NOT EXISTS idx_ChatRoom_ChatRoomName ON ChatRoom(ChatRoomName);") + self.execute("CREATE INDEX IF NOT EXISTS idx_ChatRoomInfo_ChatRoomName ON ChatRoomInfo(ChatRoomName);") + @db_error def get_labels(self, id_is_key=True): """ diff --git a/pywxdump/db/dbPublicMsg.py b/pywxdump/db/dbPublicMsg.py index 0cbdbd3..51b9b8d 100644 --- a/pywxdump/db/dbPublicMsg.py +++ b/pywxdump/db/dbPublicMsg.py @@ -39,6 +39,18 @@ class PublicMsgHandler(MsgHandler): """ return self.check_tables_exist(self.PublicMSG_required_tables) + def PublicMsg_add_index(self): + """ + 添加索引,加快查询速度 + """ + # 检查是否存在索引 + sql = "CREATE INDEX IF NOT EXISTS idx_PublicMsg_StrTalker ON MSG(StrTalker);" + self.execute(sql) + sql = "CREATE INDEX IF NOT EXISTS idx_PublicMsg_CreateTime ON MSG(CreateTime);" + self.execute(sql) + sql = "CREATE INDEX IF NOT EXISTS idx_PublicMsg_StrTalker_CreateTime ON MSG(StrTalker, CreateTime);" + self.execute(sql) + @db_error def get_plc_msg_count(self, wxids: list = ""): """