尝试大改,可读性有点差的版本,基本做到能实时处理弹幕

This commit is contained in:
2022-06-03 23:08:43 +08:00
parent 3f95b07009
commit 74a15849ab
16 changed files with 181 additions and 204 deletions

0
handler/__init__.py Normal file
View File

3
handler/common.py Normal file
View File

@ -0,0 +1,3 @@
from queue import SimpleQueue
MESSAGE_QUEUE = SimpleQueue()

15
handler/http_server.py Normal file
View File

@ -0,0 +1,15 @@
from flask import Flask, request, Response
from handler.common import MESSAGE_QUEUE
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.post("/message")
def message_from_mitmproxy():
payload = request.data
MESSAGE_QUEUE.put(payload)
return Response(status=204)

67
handler/utils.py Normal file
View File

@ -0,0 +1,67 @@
import os
from handler.common import MESSAGE_QUEUE
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 output import OUTPUTER
def loop_queue():
while True:
message = MESSAGE_QUEUE.get()
if type(message) == str:
message = message.encode("UTF-8")
try:
response = message_pb2.Response()
wss = wss_pb2.WssResponse()
wss.ParseFromString(message)
decompressed = gzip.decompress(wss.data)
response.ParseFromString(decompressed)
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)
for output in OUTPUTER:
output.member_output(member_message)
elif message.method == 'WebcastSocialMessage':
social_message = SocialMessage()
social_message.set_payload(message.payload)
for output in OUTPUTER:
output.social_output(social_message)
elif message.method == 'WebcastChatMessage':
chat_message = ChatMessage()
chat_message.set_payload(message.payload)
for output in OUTPUTER:
output.chat_output(chat_message)
elif message.method == 'WebcastLikeMessage':
like_message = LikeMessage()
like_message.set_payload(message.payload)
for output in OUTPUTER:
output.like_output(like_message)
elif message.method == 'WebcastGiftMessage':
gift_message = GiftMessage()
gift_message.set_payload(message.payload)
for output in OUTPUTER:
output.gift_output(gift_message)
elif message.method == 'WebcastRoomUserSeqMessage':
room_user_seq_message = RoomUserSeqMessage()
room_user_seq_message.set_payload(message.payload)
for output in OUTPUTER:
output.userseq_output(room_user_seq_message)
else:
...
except Exception as e:
print(e)