You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.3 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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}')