diff --git a/pytchat/processors/compatible/parser.py b/pytchat/processors/compatible/parser.py deleted file mode 100644 index b08d975..0000000 --- a/pytchat/processors/compatible/parser.py +++ /dev/null @@ -1,44 +0,0 @@ - -from .renderer.textmessage import LiveChatTextMessageRenderer -from .renderer.paidmessage import LiveChatPaidMessageRenderer -from .renderer.paidsticker import LiveChatPaidStickerRenderer -from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer - -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 = 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 - - 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 1cb3dc7..35be738 100644 --- a/pytchat/processors/compatible/processor.py +++ b/pytchat/processors/compatible/processor.py @@ -1,13 +1,14 @@ -from . parser import Parser -import json -import os -import traceback import datetime import time +from .renderer.textmessage import LiveChatTextMessageRenderer +from .renderer.paidmessage import LiveChatPaidMessageRenderer +from .renderer.paidsticker import LiveChatPaidStickerRenderer +from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer +from ... import mylogger +from ... import config +logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE) class CompatibleProcessor: - def __init__(self): - self.parser = Parser() def process(self, chat_components: list): @@ -29,7 +30,7 @@ class CompatibleProcessor: if action.get('addChatItemAction') is None: continue if action['addChatItemAction'].get('item') is None: continue - chat = self.parser.parse(action) + chat = self.parse(action) if chat: chatlist.append(chat) ret["pollingIntervalMillis"] = int(timeout*1000) @@ -39,4 +40,42 @@ class CompatibleProcessor: } ret["items"] = chatlist - return ret \ No newline at end of file + return ret + + def parse(self, sitem): + + 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 + + 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/default/parser.py b/pytchat/processors/default/parser.py deleted file mode 100644 index eec4274..0000000 --- a/pytchat/processors/default/parser.py +++ /dev/null @@ -1,39 +0,0 @@ - -from .renderer.textmessage import LiveChatTextMessageRenderer -from .renderer.paidmessage import LiveChatPaidMessageRenderer -from .renderer.paidsticker import LiveChatPaidStickerRenderer -from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer - -def parse(sitem): - - action = sitem.get("addChatItemAction") - if action: - item = action.get("item") - if item is None: return None - try: - renderer = get_renderer(item) - if renderer == None: - return None - - renderer.get_snippet() - renderer.get_authordetails() - except (KeyError,TypeError,AttributeError) as e: - print(f"------{str(type(e))}-{str(e)}----------") - print(sitem) - return None - - return renderer - -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 - diff --git a/pytchat/processors/default/processor.py b/pytchat/processors/default/processor.py index 2c1834c..7059901 100644 --- a/pytchat/processors/default/processor.py +++ b/pytchat/processors/default/processor.py @@ -1,6 +1,9 @@ -from . import parser import asyncio import time +from .renderer.textmessage import LiveChatTextMessageRenderer +from .renderer.paidmessage import LiveChatPaidMessageRenderer +from .renderer.paidsticker import LiveChatPaidStickerRenderer +from .renderer.legacypaid import LiveChatLegacyPaidMessageRenderer class Chatdata: @@ -37,8 +40,40 @@ class DefaultProcessor: if action.get('addChatItemAction') is None: continue if action['addChatItemAction'].get('item') is None: continue - chat = parser.parse(action) + chat = self.parse(action) if chat: chatlist.append(chat) return Chatdata(chatlist, float(timeout)) + + def parse(self, sitem): + + action = sitem.get("addChatItemAction") + if action: + item = action.get("item") + if item is None: return None + try: + renderer = self.get_renderer(item) + if renderer == None: + return None + + renderer.get_snippet() + renderer.get_authordetails() + except (KeyError,TypeError,AttributeError) as e: + print(f"------{str(type(e))}-{str(e)}----------") + print(sitem) + return 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 \ No newline at end of file