Modify parsing membership

This commit is contained in:
taizan-hokuto
2020-05-05 22:47:12 +09:00
parent 04457eaa5c
commit 206d052907
6 changed files with 1996 additions and 61 deletions

View File

@@ -4,17 +4,19 @@ from .renderer.textmessage import LiveChatTextMessageRenderer
from .renderer.paidmessage import LiveChatPaidMessageRenderer
from .renderer.paidsticker import LiveChatPaidStickerRenderer
from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer
from .renderer.membership import LiveChatMembershipItemRenderer
from .. chat_processor import ChatProcessor
from ... import config
logger = config.logger(__name__)
class CompatibleProcessor(ChatProcessor):
def process(self, chat_components: list):
chatlist = []
timeout = 0
ret={}
ret = {}
ret["kind"] = "youtube#liveChatMessageListResponse"
ret["etag"] = ""
ret["nextPageToken"] = ""
@@ -23,20 +25,24 @@ class CompatibleProcessor(ChatProcessor):
for chat_component in chat_components:
timeout += chat_component.get('timeout', 0)
chatdata = chat_component.get('chatdata')
if chatdata is None: break
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
if action is None:
continue
if action.get('addChatItemAction') is None:
continue
if action['addChatItemAction'].get('item') is None:
continue
chat = self.parse(action)
if chat:
chatlist.append(chat)
ret["pollingIntervalMillis"] = int(timeout*1000)
ret["pageInfo"]={
"totalResults":len(chatlist),
"resultsPerPage":len(chatlist),
ret["pageInfo"] = {
"totalResults": len(chatlist),
"resultsPerPage": len(chatlist),
}
ret["items"] = chatlist
@@ -47,8 +53,9 @@ class CompatibleProcessor(ChatProcessor):
action = sitem.get("addChatItemAction")
if action:
item = action.get("item")
if item is None: return None
rd={}
if item is None:
return None
rd = {}
try:
renderer = self.get_renderer(item)
if renderer == None:
@@ -57,25 +64,26 @@ class CompatibleProcessor(ChatProcessor):
rd["kind"] = "youtube#liveChatMessage"
rd["etag"] = ""
rd["id"] = 'LCC.' + renderer.get_id()
rd["snippet"] = renderer.get_snippet()
rd["snippet"] = renderer.get_snippet()
rd["authorDetails"] = renderer.get_authordetails()
except (KeyError,TypeError,AttributeError) as e:
except (KeyError, TypeError, AttributeError) as e:
logger.error(f"Error: {str(type(e))}-{str(e)}")
logger.error(f"item: {sitem}")
return None
return rd
return rd
def get_renderer(self, item):
if item.get("liveChatTextMessageRenderer"):
renderer = LiveChatTextMessageRenderer(item)
elif item.get("liveChatPaidMessageRenderer"):
renderer = LiveChatPaidMessageRenderer(item)
elif item.get( "liveChatPaidStickerRenderer"):
elif item.get("liveChatPaidStickerRenderer"):
renderer = LiveChatPaidStickerRenderer(item)
elif item.get("liveChatLegacyPaidMessageRenderer"):
renderer = LiveChatLegacyPaidMessageRenderer(item)
elif item.get("liveChatMembershipItemRenderer"):
renderer = LiveChatMembershipItemRenderer(item)
else:
renderer = None
return renderer