解锁并提取Linux客户端微信数据库 (vibe coded)
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