62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
from .chat_processor import ChatProcessor
|
|
|
|
|
|
class SimpleDisplayProcessor(ChatProcessor):
|
|
|
|
def process(self, chat_components: list):
|
|
chatlist = []
|
|
timeout = 0
|
|
|
|
if chat_components is None:
|
|
return {"timeout": timeout, "chatlist": chatlist}
|
|
for component in chat_components:
|
|
timeout += component.get('timeout', 0)
|
|
chatdata = component.get('chatdata')
|
|
|
|
if chatdata is None:
|
|
break
|
|
for action in chatdata:
|
|
if action is None:
|
|
continue
|
|
if action.get('addChatItemAction') is None:
|
|
continue
|
|
if action['addChatItemAction'].get('item') is None:
|
|
continue
|
|
|
|
root = action['addChatItemAction']['item'].get(
|
|
'liveChatTextMessageRenderer')
|
|
|
|
if root:
|
|
author_name = root['authorName']['simpleText']
|
|
message = self._parse_message(root.get('message'))
|
|
purchase_amount_text = ''
|
|
else:
|
|
root = (action['addChatItemAction']['item'].get('liveChatPaidMessageRenderer')
|
|
or action['addChatItemAction']['item'].get('liveChatPaidStickerRenderer'))
|
|
if root:
|
|
author_name = root['authorName']['simpleText']
|
|
message = self._parse_message(root.get('message'))
|
|
purchase_amount_text = root['purchaseAmountText']['simpleText']
|
|
else:
|
|
continue
|
|
chatlist.append(
|
|
f'[{author_name}]: {message} {purchase_amount_text}')
|
|
return {"timeout": timeout, "chatlist": chatlist}
|
|
|
|
def _parse_message(self, message):
|
|
if message is None:
|
|
return ''
|
|
if message.get('simpleText'):
|
|
return message['simpleText']
|
|
elif message.get('runs'):
|
|
runs = message['runs']
|
|
tmp = ''
|
|
for run in runs:
|
|
if run.get('emoji'):
|
|
tmp += (run['emoji']['shortcuts'][0])
|
|
elif run.get('text'):
|
|
tmp += (run['text'])
|
|
return tmp
|
|
else:
|
|
return ''
|