2024-04-16 23:16:22 +08:00
|
|
|
# -*- coding: utf-8 -*-#
|
|
|
|
# -------------------------------------------------------------------------------
|
2024-08-13 17:31:06 +08:00
|
|
|
# Name: OpenIMMedia.py
|
|
|
|
# Description: 负责处理语音数据库
|
2024-04-16 23:16:22 +08:00
|
|
|
# Author: xaoyaoo
|
|
|
|
# Date: 2024/04/15
|
|
|
|
# -------------------------------------------------------------------------------
|
|
|
|
from .dbbase import DatabaseBase
|
2024-08-03 00:21:16 +08:00
|
|
|
from .utils import silk2audio, db_loger
|
2024-04-16 23:16:22 +08:00
|
|
|
|
|
|
|
|
2024-08-03 00:21:16 +08:00
|
|
|
class OpenIMMediaHandler(DatabaseBase):
|
|
|
|
_class_name = "OpenIMMedia"
|
|
|
|
OpenIMMedia_required_tables = ["OpenIMMedia"]
|
2024-04-16 23:16:22 +08:00
|
|
|
|
2024-08-03 00:21:16 +08:00
|
|
|
def get_im_audio(self, MsgSvrID, is_play=False, is_wave=False, save_path=None, rate=24000):
|
2024-08-13 12:53:53 +08:00
|
|
|
if not self.tables_exist("OpenIMMedia"):
|
|
|
|
return False
|
2024-08-03 00:21:16 +08:00
|
|
|
sql = "select Buf from OpenIMMedia where Reserved0=? "
|
|
|
|
DBdata = self.execute(sql, (MsgSvrID,))
|
2024-04-19 21:49:07 +08:00
|
|
|
if not DBdata:
|
|
|
|
return False
|
2024-04-16 23:16:22 +08:00
|
|
|
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:
|
2024-08-03 00:21:16 +08:00
|
|
|
db_loger.warning(e, exc_info=True)
|
2024-04-16 23:16:22 +08:00
|
|
|
return False
|