|
|
from protobuf.douyin import *
|
|
|
import random
|
|
|
from loguru import logger
|
|
|
from helper import LiveChatConfig
|
|
|
|
|
|
live_chat_config = LiveChatConfig()
|
|
|
|
|
|
|
|
|
def parse_chat_msg(payload, queue):
|
|
|
"""聊天消息"""
|
|
|
if not random.random() < live_chat_config.chat_prob / 100:
|
|
|
return
|
|
|
message = ChatMessage().parse(payload)
|
|
|
user_name = message.user.nick_name
|
|
|
user_id = message.user.id
|
|
|
content = message.content
|
|
|
prompt = live_chat_config.chat_prompt.format(content=content)
|
|
|
queue.put((prompt, content))
|
|
|
# logger.info(f"【聊天msg】[{user_id}]{user_name}: {content}")
|
|
|
# logger.info(f"队列数量: {queue.qsize()}")
|
|
|
|
|
|
|
|
|
def parse_gif_msg(payload, queue):
|
|
|
"""礼物消息"""
|
|
|
if not random.random() < live_chat_config.gift_prob / 100:
|
|
|
return
|
|
|
message = GiftMessage().parse(payload)
|
|
|
user_name = message.user.nick_name
|
|
|
gift_name = message.gift.name
|
|
|
gift_count = message.combo_count
|
|
|
prompt = live_chat_config.gift_prompt.format(user_name=user_name, gift_count=gift_count, gift_name=gift_name)
|
|
|
queue.put((prompt, None))
|
|
|
# logger.info(f"【礼物msg】{user_name} 送出了 {gift_name}x{gift_count}")
|
|
|
# logger.info(f"队列数量: {queue.qsize()}")
|
|
|
|
|
|
|
|
|
def parse_like_msg(payload, queue):
|
|
|
'''点赞消息'''
|
|
|
if not random.random() < live_chat_config.like_prob / 100:
|
|
|
return
|
|
|
message = LikeMessage().parse(payload)
|
|
|
user_name = message.user.nick_name
|
|
|
count = message.count
|
|
|
prompt = live_chat_config.like_prompt.format(user_name=user_name, count=count)
|
|
|
queue.put((prompt, None))
|
|
|
# logger.info(f"【点赞msg】{user_name} 点了{count}个赞")
|
|
|
# logger.info(f"队列数量: {queue.qsize()}")
|
|
|
|
|
|
|
|
|
def parse_member_msg(payload, queue):
|
|
|
'''进入直播间消息'''
|
|
|
if not random.random() < live_chat_config.enter_live_room_prob / 100:
|
|
|
return
|
|
|
message = MemberMessage().parse(payload)
|
|
|
user_name = message.user.nick_name
|
|
|
user_id = message.user.id
|
|
|
gender = message.user.gender
|
|
|
if gender in (0, 1):
|
|
|
gender = ["女", "男"][gender]
|
|
|
prompt = live_chat_config.enter_live_room_prompt.format(user_name=user_name)
|
|
|
queue.put((prompt, None))
|
|
|
# logger.info(f"【进场msg】[{user_id}][{gender}]{user_name} 进入了直播间")
|
|
|
# logger.info(f"队列数量: {queue.qsize()}")
|
|
|
|
|
|
|
|
|
def parse_social_msg(payload, queue):
|
|
|
'''关注消息'''
|
|
|
if not random.random() < live_chat_config.follow_prob / 100:
|
|
|
return
|
|
|
message = SocialMessage().parse(payload)
|
|
|
user_name = message.user.nick_name
|
|
|
user_id = message.user.id
|
|
|
prompt = live_chat_config.follow_prompt.format(user_name=user_name)
|
|
|
queue.put((prompt, None))
|
|
|
# logger.info(f"【关注msg】[{user_id}]{user_name} 关注了主播")
|
|
|
# logger.info(f"队列数量: {queue.qsize()}")
|
|
|
|
|
|
|
|
|
def parse_room_user_seq_msg(payload):
|
|
|
'''直播间统计'''
|
|
|
message = RoomUserSeqMessage().parse(payload)
|
|
|
current = message.total
|
|
|
total = message.total_pv_for_anchor
|
|
|
# print(f"【统计msg】当前观看人数: {current}, 累计观看人数: {total}")
|
|
|
|
|
|
|
|
|
def parse_fansclub_msg(payload):
|
|
|
'''粉丝团消息'''
|
|
|
message = FansclubMessage().parse(payload)
|
|
|
content = message.content
|
|
|
# print(f"【粉丝团msg】 {content}")
|
|
|
|
|
|
|
|
|
def parse_emoji_chat_msg(payload):
|
|
|
'''聊天表情包消息'''
|
|
|
message = EmojiChatMessage().parse(payload)
|
|
|
emoji_id = message.emoji_id
|
|
|
user = message.user
|
|
|
common = message.common
|
|
|
default_content = message.default_content
|
|
|
# print(f"【聊天表情包id】 {emoji_id},user:{user},common:{common},default_content:{default_content}")
|
|
|
|
|
|
|
|
|
def parse_room_msg(payload):
|
|
|
message = RoomMessage().parse(payload)
|
|
|
common = message.common
|
|
|
room_id = common.room_id
|
|
|
# print(f"【直播间msg】直播间id:{room_id}")
|
|
|
|
|
|
|
|
|
def parse_room_stats_msg(payload):
|
|
|
message = RoomStatsMessage().parse(payload)
|
|
|
display_long = message.display_long
|
|
|
# print(f"【直播间统计msg】{display_long}")
|
|
|
|
|
|
|
|
|
def parse_rank_msg(payload):
|
|
|
message = RoomRankMessage().parse(payload)
|
|
|
ranks_list = message.ranks_list
|
|
|
# print(f"【直播间排行榜msg】{ranks_list}")
|
|
|
|
|
|
|
|
|
def parse_room_stream_adaptation_msg(payload):
|
|
|
message = RoomStreamAdaptationMessage().parse(payload)
|
|
|
adaptationType = message.adaptation_type
|
|
|
# print(f'直播间adaptation: {adaptationType}')
|