's'
This commit is contained in:
66
liveMan.py
66
liveMan.py
@@ -28,6 +28,24 @@ from ws_server import push_to_frontend
|
||||
import asyncio
|
||||
from dataclasses import asdict
|
||||
|
||||
# TTS 播报引擎(全局只初始化一次)
|
||||
tts_engine = pyttsx3.init()
|
||||
tts_engine.setProperty('rate', 170)
|
||||
tts_engine.setProperty('volume', 1.0)
|
||||
|
||||
# 加锁防止多线程同时播报冲突
|
||||
tts_lock = threading.Lock()
|
||||
|
||||
def speak(text: str):
|
||||
"""线程安全地进行语音播报"""
|
||||
try:
|
||||
with tts_lock:
|
||||
tts_engine.say(text)
|
||||
tts_engine.runAndWait()
|
||||
except Exception as e:
|
||||
print("【X】TTS 播报失败:", e)
|
||||
|
||||
|
||||
@contextmanager
|
||||
def patched_popen_encoding(encoding='utf-8'):
|
||||
original_popen_init = subprocess.Popen.__init__
|
||||
@@ -306,14 +324,34 @@ class DouyinLiveWebFetcher:
|
||||
user_name = message.user.nick_name
|
||||
gift_name = message.gift.name
|
||||
gift_cnt = message.combo_count
|
||||
print(f"【礼物msg】{user_name} 送出了 {gift_name}x{gift_cnt}")
|
||||
print('送了礼物呀')
|
||||
# print(f"【礼物msg】{user_name} 送出了 {gift_name}x{gift_cnt}")
|
||||
user_data = asdict(message.user)
|
||||
try:
|
||||
speak(f"谢谢{user_name}送的小星星")
|
||||
push_to_frontend(user_data,'gift')
|
||||
except Exception as e:
|
||||
print("【礼物播报失败:", e)
|
||||
|
||||
def _parseLikeMsg(self, payload):
|
||||
'''点赞消息'''
|
||||
message = LikeMessage().parse(payload)
|
||||
# message = LikeMessage().parse(payload)
|
||||
user_name = message.user.nick_name
|
||||
count = message.count
|
||||
print(f"【点赞msg】{user_name} 点了{count}个赞")
|
||||
# count = message.count
|
||||
# print('点了攒')
|
||||
# # print(f"【点赞msg】{user_name} 点了{count}个赞")
|
||||
# user_data = asdict(message.user)
|
||||
try:
|
||||
message = LikeMessage().parse(payload)
|
||||
user_name = message.user.nick_name
|
||||
count = message.count
|
||||
print('点了攒')
|
||||
# print(f"【点赞msg】{user_name} 点了{count}个赞")
|
||||
user_data = asdict(message.user)
|
||||
speak(f"谢谢{user_name}点赞")
|
||||
push_to_frontend(user_data,'like')
|
||||
except Exception as e:
|
||||
print("【点赞播报失败:", e)
|
||||
|
||||
# def _parseMemberMsg(self, payload):
|
||||
# '''进入直播间消息'''
|
||||
@@ -326,26 +364,14 @@ class DouyinLiveWebFetcher:
|
||||
'''进入直播间消息'''
|
||||
message = MemberMessage().parse(payload)
|
||||
user_name = message.user.nick_name
|
||||
user_id = message.user.id
|
||||
gender = ["女", "男"][message.user.gender]
|
||||
# avatar = message.user.avatar
|
||||
print(f"【进场msg】{user_name} 进入了直播间")
|
||||
user_data = asdict(message.user)
|
||||
# user_data = {
|
||||
# "user_id": user_id,
|
||||
# "user_name": user_name,
|
||||
# "gender": gender,
|
||||
# }
|
||||
|
||||
# ✅ 播放语音播报
|
||||
try:
|
||||
# engine = pyttsx3.init()
|
||||
# engine.setProperty('rate', 170) # 语速,建议范围 120-200
|
||||
# engine.setProperty('volume', 1.0) # 音量 0.0 ~ 1.0
|
||||
# # engine.say(f"{gender}观众 {user_name} 进入了直播间")
|
||||
# engine.say(f"{user_name}进入了直播间")
|
||||
# engine.runAndWait()
|
||||
# ✅ 播放语音播报
|
||||
speak(f"{user_name}进入了直播间")
|
||||
# 推送给 WebSocket 客户端
|
||||
push_to_frontend(user_data)
|
||||
push_to_frontend(user_data,'join')
|
||||
except Exception as e:
|
||||
print("【X】TTS 播报失败:", e)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user