You've already forked Douyin_Web_Live
尝试大改,可读性有点差的版本,基本做到能实时处理弹幕
This commit is contained in:
@ -1,6 +1,5 @@
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
from store.mongo import MongoStore
|
||||
|
||||
from config.helper import config
|
||||
|
||||
@ -13,55 +12,13 @@ class Base:
|
||||
|
||||
def extra_info(self):
|
||||
return dict()
|
||||
|
||||
|
||||
def user(self):
|
||||
if(hasattr(self.instance, 'user')):
|
||||
return self.instance.user
|
||||
|
||||
|
||||
return None
|
||||
|
||||
def persists(self):
|
||||
if config()['mongo']['enabled'] != 'on':
|
||||
return
|
||||
|
||||
try:
|
||||
store = MongoStore()
|
||||
|
||||
user = self.user()
|
||||
if user is not None:
|
||||
store.set_collection('user')
|
||||
|
||||
if not store.exists({'id': user.id}):
|
||||
store.insert_one({
|
||||
'id': user.id,
|
||||
'shortId': user.shortId,
|
||||
'nickname': user.nickname,
|
||||
'gender': user.gender
|
||||
})
|
||||
|
||||
store.set_collection(self.instance.common.method)
|
||||
msg = {
|
||||
"msgId": self.instance.common.msgId,
|
||||
"roomId": self.instance.common.roomId,
|
||||
'content': self.format_content(),
|
||||
'created_at': datetime.today().replace(microsecond=0)
|
||||
}
|
||||
|
||||
if user is not None:
|
||||
msg.update({
|
||||
'userId': user.id
|
||||
})
|
||||
|
||||
if len(self.extra_info()):
|
||||
msg.update(self.extra_info())
|
||||
|
||||
store.insert_one(msg)
|
||||
except Exception as e:
|
||||
print(self.instance.common.method + ' persists error')
|
||||
print(traceback.format_exc())
|
||||
finally:
|
||||
store.close()
|
||||
|
||||
def __str__(self):
|
||||
pass
|
||||
|
||||
|
@ -1,86 +0,0 @@
|
||||
import os
|
||||
from protobuf import message_pb2
|
||||
from protobuf import wss_pb2
|
||||
import gzip
|
||||
from messages.member import MemberMessage
|
||||
from messages.like import LikeMessage
|
||||
from messages.roomuserseq import RoomUserSeqMessage
|
||||
from messages.gift import GiftMessage
|
||||
from messages.social import SocialMessage
|
||||
from messages.chat import ChatMessage
|
||||
|
||||
from colorama import init, Fore
|
||||
# define colors
|
||||
RED = Fore.RED
|
||||
GREEN = Fore.GREEN
|
||||
BLUE = Fore.BLUE
|
||||
CYAN = Fore.CYAN
|
||||
MAGENTA = Fore.MAGENTA
|
||||
YELLOW = Fore.YELLOW
|
||||
WHITE = Fore.WHITE
|
||||
RESET = Fore.RESET
|
||||
init()
|
||||
|
||||
def unpackMsgBin(filepath):
|
||||
response = message_pb2.Response()
|
||||
wss = wss_pb2.WssResponse()
|
||||
try:
|
||||
with open(filepath, 'rb') as f:
|
||||
path_content = f.read()
|
||||
wss.ParseFromString( path_content )
|
||||
decompressed = gzip.decompress(wss.data)
|
||||
response.ParseFromString(decompressed)
|
||||
decodeMsg(response.messages)
|
||||
except Exception as e:
|
||||
os.remove(filepath)
|
||||
pass
|
||||
finally:
|
||||
os.remove(filepath)
|
||||
|
||||
def decodeMsg(messages):
|
||||
for message in messages:
|
||||
try:
|
||||
if message.method == 'WebcastMemberMessage':
|
||||
member_message = MemberMessage()
|
||||
member_message.set_payload(message.payload)
|
||||
member_message.persists()
|
||||
|
||||
print(f"\n{RED}[+] {member_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastSocialMessage':
|
||||
social_message = SocialMessage()
|
||||
social_message.set_payload(message.payload)
|
||||
social_message.persists()
|
||||
|
||||
print(f"\n{GREEN}[+] {social_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastChatMessage':
|
||||
chat_message = ChatMessage()
|
||||
chat_message.set_payload(message.payload)
|
||||
chat_message.persists()
|
||||
|
||||
print(f"\n{BLUE}[+] {chat_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastLikeMessage':
|
||||
like_message = LikeMessage()
|
||||
like_message.set_payload(message.payload)
|
||||
like_message.persists()
|
||||
|
||||
print(f"\n{CYAN}[+] {like_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastGiftMessage':
|
||||
gift_message = GiftMessage()
|
||||
gift_message.set_payload(message.payload)
|
||||
gift_message.persists()
|
||||
|
||||
print(f"\n{MAGENTA}[+] {gift_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastRoomUserSeqMessage':
|
||||
room_user_seq_message = RoomUserSeqMessage()
|
||||
room_user_seq_message.set_payload(message.payload)
|
||||
room_user_seq_message.persists()
|
||||
|
||||
print(f"\n{YELLOW}[+] {room_user_seq_message} {RESET}")
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
Reference in New Issue
Block a user