You've already forked Douyin_Web_Live
抖音直播间(web版)弹幕抓取
This commit is contained in:
13
messages/Base.py
Normal file
13
messages/Base.py
Normal file
@ -0,0 +1,13 @@
|
||||
class Base:
|
||||
|
||||
instance = None
|
||||
|
||||
def set_payload(self, payload):
|
||||
self.instance.ParseFromString(payload)
|
||||
|
||||
def user(self):
|
||||
return self.instance.user
|
||||
|
||||
def __str__(self):
|
||||
pass
|
||||
|
0
messages/__init__.py
Normal file
0
messages/__init__.py
Normal file
11
messages/chat.py
Normal file
11
messages/chat.py
Normal file
@ -0,0 +1,11 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class ChatMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.ChatMessage()
|
||||
|
||||
def __str__(self):
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【发言】' + self.user().nickname + ': ' + self.instance.content
|
11
messages/gift.py
Normal file
11
messages/gift.py
Normal file
@ -0,0 +1,11 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class GiftMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.GiftMessage()
|
||||
|
||||
def __str__(self):
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【送礼】' + self.instance.common.describe
|
11
messages/like.py
Normal file
11
messages/like.py
Normal file
@ -0,0 +1,11 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class LikeMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.LikeMessage()
|
||||
|
||||
def __str__(self):
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【点赞】' + self.user().nickname + ' 点赞了直播间(' + str(self.instance.count) + '连赞)'
|
14
messages/member.py
Normal file
14
messages/member.py
Normal file
@ -0,0 +1,14 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class MemberMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.MemberMessage()
|
||||
|
||||
def __str__(self):
|
||||
template = self.instance.common.displayText.defaultPattern
|
||||
nickname = self.user().nickname
|
||||
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【进入直播间】' + template.replace('{0:user}', nickname).replace('{1:string}', '')
|
11
messages/roomuserseq.py
Normal file
11
messages/roomuserseq.py
Normal file
@ -0,0 +1,11 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class RoomUserSeqMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.RoomUserSeqMessage()
|
||||
|
||||
def __str__(self):
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【观看人数】' + self.instance.totalUserStr
|
11
messages/social.py
Normal file
11
messages/social.py
Normal file
@ -0,0 +1,11 @@
|
||||
import time
|
||||
|
||||
from protobuf import message_pb2
|
||||
from messages.base import Base
|
||||
|
||||
class SocialMessage(Base):
|
||||
def __init__(self):
|
||||
self.instance = message_pb2.SocialMessage()
|
||||
|
||||
def __str__(self):
|
||||
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '【关注】' + self.user().nickname + ' 关注了主播'
|
67
messages/utils.py
Normal file
67
messages/utils.py
Normal file
@ -0,0 +1,67 @@
|
||||
from protobuf import message_pb2
|
||||
|
||||
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()
|
||||
|
||||
try:
|
||||
with open(filepath, 'rb') as f:
|
||||
response.ParseFromString(f.read())
|
||||
|
||||
decodeMsg(response.messages)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def decodeMsg(messages):
|
||||
for message in messages:
|
||||
try:
|
||||
if message.method == 'WebcastMemberMessage':
|
||||
member_message = MemberMessage()
|
||||
member_message.set_payload(message.payload)
|
||||
print(f"\n{RED}[+] {member_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastSocialMessage':
|
||||
social_message = SocialMessage()
|
||||
social_message.set_payload(message.payload)
|
||||
print(f"\n{GREEN}[+] {social_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastChatMessage':
|
||||
chat_message = ChatMessage()
|
||||
chat_message.set_payload(message.payload)
|
||||
print(f"\n{BLUE}[+] {chat_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastLikeMessage':
|
||||
like_message = LikeMessage()
|
||||
like_message.set_payload(message.payload)
|
||||
print(f"\n{CYAN}[+] {like_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastGiftMessage':
|
||||
gift_message = GiftMessage()
|
||||
gift_message.set_payload(message.payload)
|
||||
print(f"\n{MAGENTA}[+] {gift_message} {RESET}")
|
||||
|
||||
elif message.method == 'WebcastRoomUserSeqMessage':
|
||||
room_user_seq_message = RoomUserSeqMessage()
|
||||
room_user_seq_message.set_payload(message.payload)
|
||||
print(f"\n{YELLOW}[+] {room_user_seq_message} {RESET}")
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
Reference in New Issue
Block a user