diff --git a/pytchat/processors/compatible/parser.py b/pytchat/processors/compatible/parser.py index 08cd7a1..b08d975 100644 --- a/pytchat/processors/compatible/parser.py +++ b/pytchat/processors/compatible/parser.py @@ -4,40 +4,41 @@ from .renderer.paidmessage import LiveChatPaidMessageRenderer from .renderer.paidsticker import LiveChatPaidStickerRenderer from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer -def parse(sitem): +class Parser: + def parse(self, sitem): - action = sitem.get("addChatItemAction") - if action: - item = action.get("item") - if item is None: return None - rd={} - try: - renderer = get_renderer(item) - if renderer == None: + action = sitem.get("addChatItemAction") + if action: + item = action.get("item") + if item is None: return None + rd={} + try: + renderer = self.get_renderer(item) + if renderer == None: + return None + + rd["kind"] = "youtube#liveChatMessage" + rd["etag"] = "" + rd["id"] = 'LCC.' + renderer.get_id() + rd["snippet"] = renderer.get_snippet() + rd["authorDetails"] = renderer.get_authordetails() + except (KeyError,TypeError,AttributeError) as e: + print(f"------{str(type(e))}-{str(e)}----------") + print(sitem) return None + + return rd - rd["kind"] = "youtube#liveChatMessage" - rd["etag"] = "" - rd["id"] = 'LCC.' + renderer.get_id() - rd["snippet"] = renderer.get_snippet() - rd["authorDetails"] = renderer.get_authordetails() - except (KeyError,TypeError,AttributeError) as e: - print(f"------{str(type(e))}-{str(e)}----------") - print(sitem) - return None - - return rd - -def get_renderer(item): - if item.get("liveChatTextMessageRenderer"): - renderer = LiveChatTextMessageRenderer(item) - elif item.get("liveChatPaidMessageRenderer"): - renderer = LiveChatPaidMessageRenderer(item) - elif item.get( "liveChatPaidStickerRenderer"): - renderer = LiveChatPaidStickerRenderer(item) - elif item.get("liveChatLegacyPaidMessageRenderer"): - renderer = LiveChatLegacyPaidMessageRenderer(item) - else: - renderer = None - return renderer + def get_renderer(self, item): + if item.get("liveChatTextMessageRenderer"): + renderer = LiveChatTextMessageRenderer(item) + elif item.get("liveChatPaidMessageRenderer"): + renderer = LiveChatPaidMessageRenderer(item) + elif item.get( "liveChatPaidStickerRenderer"): + renderer = LiveChatPaidStickerRenderer(item) + elif item.get("liveChatLegacyPaidMessageRenderer"): + renderer = LiveChatLegacyPaidMessageRenderer(item) + else: + renderer = None + return renderer diff --git a/pytchat/processors/compatible/processor.py b/pytchat/processors/compatible/processor.py index 277cbcf..1cb3dc7 100644 --- a/pytchat/processors/compatible/processor.py +++ b/pytchat/processors/compatible/processor.py @@ -1,11 +1,14 @@ -from . import parser +from . parser import Parser import json import os import traceback import datetime import time -class CompatibleProcessor(): - + +class CompatibleProcessor: + def __init__(self): + self.parser = Parser() + def process(self, chat_components: list): chatlist = [] @@ -26,7 +29,7 @@ class CompatibleProcessor(): if action.get('addChatItemAction') is None: continue if action['addChatItemAction'].get('item') is None: continue - chat = parser.parse(action) + chat = self.parser.parse(action) if chat: chatlist.append(chat) ret["pollingIntervalMillis"] = int(timeout*1000)