解锁并提取Linux客户端微信数据库 (vibe coded)
at 38 lines 1.3 kB view raw
1# -*- coding: utf-8 -*-# 2# ------------------------------------------------------------------------------- 3# Name: MediaMSG.py 4# Description: 负责处理语音数据库 5# Author: xaoyaoo 6# Date: 2024/04/15 7# ------------------------------------------------------------------------------- 8from .db_base import DatabaseBase 9from .utils import silk2audio 10 11 12class MediaHandler(DatabaseBase): 13 _class_name = "MediaMSG" 14 Media_required_tables = ["Media"] 15 16 def Media_add_index(self): 17 """ 18 添加索引, 加快查询速度 19 """ 20 if self.tables_exist("Media"): 21 self.execute("CREATE INDEX IF NOT EXISTS MsgSvrID ON Media(Reserved0)") 22 23 def get_audio(self, MsgSvrID, is_play=False, is_wave=False, save_path=None, rate=24000): 24 if not self.tables_exist("Media"): 25 return False 26 27 sql = "select Buf from Media where Reserved0=? " 28 DBdata = self.execute(sql, (MsgSvrID,)) 29 if not DBdata: 30 return False 31 if len(DBdata) == 0: 32 return False 33 data = DBdata[0][0] # [1:] + b'\xFF\xFF' 34 try: 35 pcm_data = silk2audio(buf_data=data, is_play=is_play, is_wave=is_wave, save_path=save_path, rate=rate) 36 return pcm_data 37 except Exception as e: 38 return False