Implement Combinator, DummyProcessor
This commit is contained in:
@@ -19,5 +19,6 @@ from .api import (
|
|||||||
CompatibleProcessor,
|
CompatibleProcessor,
|
||||||
SimpleDisplayProcessor,
|
SimpleDisplayProcessor,
|
||||||
JsonfileArchiveProcessor,
|
JsonfileArchiveProcessor,
|
||||||
SpeedCalculator
|
SpeedCalculator,
|
||||||
)
|
DummyProcessor
|
||||||
|
)
|
||||||
@@ -8,3 +8,4 @@ from .processors.compatible.processor import CompatibleProcessor
|
|||||||
from .processors.simple_display_processor import SimpleDisplayProcessor
|
from .processors.simple_display_processor import SimpleDisplayProcessor
|
||||||
from .processors.jsonfile_archive_processor import JsonfileArchiveProcessor
|
from .processors.jsonfile_archive_processor import JsonfileArchiveProcessor
|
||||||
from .processors.speed_calculator import SpeedCalculator
|
from .processors.speed_calculator import SpeedCalculator
|
||||||
|
from .processors.dummy_processor import DummyProcessor
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from .. import mylogger
|
|||||||
from ..exceptions import ChatParseException,IllegalFunctionCall
|
from ..exceptions import ChatParseException,IllegalFunctionCall
|
||||||
from ..paramgen import liveparam
|
from ..paramgen import liveparam
|
||||||
from ..processors.default.processor import DefaultProcessor
|
from ..processors.default.processor import DefaultProcessor
|
||||||
|
from ..processors.combinator import Combinator
|
||||||
|
|
||||||
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
||||||
MAX_RETRY = 10
|
MAX_RETRY = 10
|
||||||
@@ -72,7 +73,10 @@ class LiveChatAsync:
|
|||||||
exception_handler = None,
|
exception_handler = None,
|
||||||
direct_mode = False):
|
direct_mode = False):
|
||||||
self.video_id = video_id
|
self.video_id = video_id
|
||||||
self.processor = processor
|
if isinstance(processor, tuple):
|
||||||
|
self.processor = Combinator(processor)
|
||||||
|
else:
|
||||||
|
self.processor = processor
|
||||||
self._buffer = buffer
|
self._buffer = buffer
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._done_callback = done_callback
|
self._done_callback = done_callback
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from .. import mylogger
|
|||||||
from ..exceptions import ChatParseException,IllegalFunctionCall
|
from ..exceptions import ChatParseException,IllegalFunctionCall
|
||||||
from ..paramgen import arcparam
|
from ..paramgen import arcparam
|
||||||
from ..processors.default.processor import DefaultProcessor
|
from ..processors.default.processor import DefaultProcessor
|
||||||
|
from ..processors.combinator import Combinator
|
||||||
|
|
||||||
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
||||||
MAX_RETRY = 10
|
MAX_RETRY = 10
|
||||||
@@ -78,7 +79,10 @@ class ReplayChatAsync:
|
|||||||
direct_mode = False):
|
direct_mode = False):
|
||||||
self.video_id = video_id
|
self.video_id = video_id
|
||||||
self.seektime = seektime
|
self.seektime = seektime
|
||||||
self.processor = processor
|
if isinstance(processor, tuple):
|
||||||
|
self.processor = Combinator(processor)
|
||||||
|
else:
|
||||||
|
self.processor = processor
|
||||||
self._buffer = buffer
|
self._buffer = buffer
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._done_callback = done_callback
|
self._done_callback = done_callback
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from .. import mylogger
|
|||||||
from ..exceptions import ChatParseException,IllegalFunctionCall
|
from ..exceptions import ChatParseException,IllegalFunctionCall
|
||||||
from ..paramgen import liveparam
|
from ..paramgen import liveparam
|
||||||
from ..processors.default.processor import DefaultProcessor
|
from ..processors.default.processor import DefaultProcessor
|
||||||
|
from ..processors.combinator import Combinator
|
||||||
|
|
||||||
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
||||||
MAX_RETRY = 10
|
MAX_RETRY = 10
|
||||||
@@ -72,7 +73,10 @@ class LiveChat:
|
|||||||
direct_mode = False
|
direct_mode = False
|
||||||
):
|
):
|
||||||
self.video_id = video_id
|
self.video_id = video_id
|
||||||
self.processor = processor
|
if isinstance(processor, tuple):
|
||||||
|
self.processor = Combinator(processor)
|
||||||
|
else:
|
||||||
|
self.processor = processor
|
||||||
self._buffer = buffer
|
self._buffer = buffer
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._done_callback = done_callback
|
self._done_callback = done_callback
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from .. import mylogger
|
|||||||
from ..exceptions import ChatParseException,IllegalFunctionCall
|
from ..exceptions import ChatParseException,IllegalFunctionCall
|
||||||
from ..paramgen import arcparam
|
from ..paramgen import arcparam
|
||||||
from ..processors.default.processor import DefaultProcessor
|
from ..processors.default.processor import DefaultProcessor
|
||||||
|
from ..processors.combinator import Combinator
|
||||||
|
|
||||||
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE)
|
||||||
MAX_RETRY = 10
|
MAX_RETRY = 10
|
||||||
@@ -78,7 +79,10 @@ class ReplayChat:
|
|||||||
):
|
):
|
||||||
self.video_id = video_id
|
self.video_id = video_id
|
||||||
self.seektime = seektime
|
self.seektime = seektime
|
||||||
self.processor = processor
|
if isinstance(processor, tuple):
|
||||||
|
self.processor = Combinator(processor)
|
||||||
|
else:
|
||||||
|
self.processor = processor
|
||||||
self._buffer = buffer
|
self._buffer = buffer
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._done_callback = done_callback
|
self._done_callback = done_callback
|
||||||
|
|||||||
39
pytchat/processors/combinator.py
Normal file
39
pytchat/processors/combinator.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
from .chat_processor import ChatProcessor
|
||||||
|
|
||||||
|
class Combinator(ChatProcessor):
|
||||||
|
'''
|
||||||
|
Combinator combines multiple chat processors.
|
||||||
|
Specify processors as tuple at `processor` params of LiveChat object.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
[constructor]
|
||||||
|
chat = LiveChat("video_id", processor = ( Processor1(), Processor2(), Processor3() )
|
||||||
|
|
||||||
|
[receive return values]
|
||||||
|
ret1, ret2, ret3 = chat.get()
|
||||||
|
|
||||||
|
The return values are tuple of processed chat data,
|
||||||
|
the order of return depends on parameter order.
|
||||||
|
|
||||||
|
Parameter
|
||||||
|
---------
|
||||||
|
processors : Tuple[ChatProcessor]
|
||||||
|
multiple processors for processing chat data
|
||||||
|
'''
|
||||||
|
|
||||||
|
def __init__(self, processors: tuple):
|
||||||
|
self.processors = processors
|
||||||
|
|
||||||
|
def process(self, chat_components: list):
|
||||||
|
'''
|
||||||
|
Called from LiveChat.get() function by user,
|
||||||
|
or LiveChat._listen() automatically.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
Tuple of chat data processed by each chat processor.
|
||||||
|
'''
|
||||||
|
return tuple([processor.process(chat_components)
|
||||||
|
for processor in self.processors])
|
||||||
|
|
||||||
|
|
||||||
8
pytchat/processors/dummy_processor.py
Normal file
8
pytchat/processors/dummy_processor.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
from .chat_processor import ChatProcessor
|
||||||
|
|
||||||
|
class DummyProcessor(ChatProcessor):
|
||||||
|
'''
|
||||||
|
Dummy processor just returns received chat_components directly.
|
||||||
|
'''
|
||||||
|
def process(self, chat_components: list):
|
||||||
|
return chat_components
|
||||||
Reference in New Issue
Block a user