From 823f7fefa45c48a755caa733fad13357a2d88407 Mon Sep 17 00:00:00 2001 From: taizan-hokuto <55448286+taizan-hokuto@users.noreply.github.com> Date: Tue, 19 Nov 2019 20:36:54 +0900 Subject: [PATCH] Fix comments --- pytchat/core_async/livechat.py | 14 ++------------ pytchat/core_async/replaychat.py | 21 +++++++++++---------- pytchat/core_multithread/livechat.py | 11 +++-------- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/pytchat/core_async/livechat.py b/pytchat/core_async/livechat.py index 15c757c..77fbc3c 100644 --- a/pytchat/core_async/livechat.py +++ b/pytchat/core_async/livechat.py @@ -3,7 +3,6 @@ import datetime import json import random import signal -import threading import time import traceback import urllib.parse @@ -123,7 +122,7 @@ class LiveChatAsync: async def _startlisten(self): """最初のcontinuationパラメータを取得し、 - _listenループを開始する + _listenループのタスクを作成し開始する """ initial_continuation = await self._get_initial_continuation() if initial_continuation is None: @@ -286,13 +285,4 @@ class LiveChatAsync: logger.debug(f"残っているタスクを終了しています") await asyncio.gather(*tasks,return_exceptions=True) loop = asyncio.get_event_loop() - loop.stop() - - - - - - - - - + loop.stop() \ No newline at end of file diff --git a/pytchat/core_async/replaychat.py b/pytchat/core_async/replaychat.py index a7ae229..b6a43ac 100644 --- a/pytchat/core_async/replaychat.py +++ b/pytchat/core_async/replaychat.py @@ -21,8 +21,10 @@ logger = mylogger.get_logger(__name__,mode=config.LOGGER_MODE) MAX_RETRY = 10 headers = config.headers + + class ReplayChatAsync: - ''' aiohttpを利用してYouTubeのライブ配信のチャットデータを取得する + '''asyncio(aiohttp)を利用してYouTubeのチャットデータを取得する。 Parameter --------- @@ -49,6 +51,9 @@ class ReplayChatAsync: done_callback : func listener終了時に呼び出すコールバック。 + exception_handler : func + 例外を処理する関数 + direct_mode : bool Trueの場合、bufferを使わずにcallbackを呼ぶ。 Trueの場合、callbackの設定が必須 @@ -56,11 +61,8 @@ class ReplayChatAsync: Attributes --------- - _executor : ThreadPoolExecutor - チャットデータ取得ループ(_listen)用のスレッド - _is_alive : bool - チャット取得を終了したか + チャット取得を停止するためのフラグ ''' _setup_finished = False @@ -68,7 +70,7 @@ class ReplayChatAsync: def __init__(self, video_id, seektime = 0, processor = DefaultProcessor(), - buffer = Buffer(maxsize = 20), + buffer = None, interruptable = True, callback = None, done_callback = None, @@ -154,8 +156,8 @@ class ReplayChatAsync: async def _listen(self, continuation): ''' continuationに紐付いたチャットデータを取得し - にチャットデータを格納、 - 次のcontinuaitonを取得してループする + Bufferにチャットデータを格納、 + 次のcontinuaitonを取得してループする。 Parameter --------- @@ -189,11 +191,10 @@ class ReplayChatAsync: else: await self._buffer.put(chat_component) diff_time = timeout - (time.time()-time_mark) - if diff_time < 0 : diff_time=0 await asyncio.sleep(diff_time) continuation = metadata.get('continuation') except ChatParseException as e: - logger.error(f"{str(e)}(動画ID:\"{self.video_id}\")") + logger.info(f"{str(e)}(video_id:\"{self.video_id}\")") return except (TypeError , json.JSONDecodeError) : logger.error(f"{traceback.format_exc(limit = -1)}") diff --git a/pytchat/core_multithread/livechat.py b/pytchat/core_multithread/livechat.py index c47cae8..9d70b00 100644 --- a/pytchat/core_multithread/livechat.py +++ b/pytchat/core_multithread/livechat.py @@ -57,7 +57,7 @@ class LiveChat: チャットデータ取得ループ(_listen)用のスレッド _is_alive : bool - チャット取得を終了したか + チャット取得を停止するためのフラグ ''' _setup_finished = False @@ -142,7 +142,7 @@ class LiveChat: def _listen(self, continuation): ''' continuationに紐付いたチャットデータを取得し - にチャットデータを格納、 + BUfferにチャットデータを格納、 次のcontinuaitonを取得してループする Parameter @@ -157,7 +157,6 @@ class LiveChat: self._get_livechat_json(continuation, session, headers) ) metadata, chatdata = self._parser.parse( livechat_json ) - #チャットデータを含むコンポーネントを組み立ててbufferに投入する timeout = metadata['timeoutMs']/1000 chat_component = { "video_id" : self.video_id, @@ -171,16 +170,12 @@ class LiveChat: ) else: self._buffer.put(chat_component) - #次のchatを取得するまでsleepする diff_time = timeout - (time.time()-time_mark) if diff_time < 0 : diff_time=0 time.sleep(diff_time) - #次のチャットデータのcontinuationパラメータを取り出す。 continuation = metadata.get('continuation') - - #whileループ先頭に戻る except ChatParseException as e: - logger.error(f"{str(e)}(動画ID:\"{self.video_id}\")") + logger.info(f"{str(e)}(video_id:\"{self.video_id}\")") return except (TypeError , json.JSONDecodeError) : logger.error(f"{traceback.format_exc(limit = -1)}")