From 18400724b1d8b790953902d5a50a53a3eb0d44ed Mon Sep 17 00:00:00 2001 From: taizan-hokuto <55448286+taizan-hokuto@users.noreply.github.com> Date: Thu, 2 Jan 2020 21:08:53 +0900 Subject: [PATCH] Modify metadata selection --- pytchat/core_async/livechat.py | 1 - pytchat/parser/live.py | 28 ++++++++++++---------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/pytchat/core_async/livechat.py b/pytchat/core_async/livechat.py index e178b46..cc1ab46 100644 --- a/pytchat/core_async/livechat.py +++ b/pytchat/core_async/livechat.py @@ -199,7 +199,6 @@ class LiveChatAsync: ------- 'contents' dict which includes metadata & chatdata. ''' - livechat_json = (await self._get_livechat_json(continuation, session, headers) ) diff --git a/pytchat/parser/live.py b/pytchat/parser/live.py index c445780..031c031 100644 --- a/pytchat/parser/live.py +++ b/pytchat/parser/live.py @@ -31,11 +31,8 @@ class Parser: def parse(self, contents): """ このparse関数はLiveChat._listen() 関数から定期的に呼び出される。 - 引数jsnはYoutubeから取得したチャットデータの生JSONであり、 - このparse関数によって与えられたJSONを以下に分割して返す。 - + timeout (次のチャットデータ取得までのインターバル) - + chat data(チャットデータ本体) - + continuation (次のチャットデータ取得に必要となるパラメータ). + 引数contentsはYoutubeから取得したチャットデータの生JSONであり、 + 与えられたJSONをチャットデータとメタデータに分割して返す。 Parameter ---------- @@ -45,19 +42,17 @@ class Parser: Returns ------- - + metadata : dict - + チャットデータに付随するメタデータ。timeout、 動画ID、continuationパラメータで構成される。 + tuple: + + metadata : dict  チャットデータに付随するメタデータ + + timeout + + video_id + + continuation + chatdata : list[dict] - + チャットデータ本体のリスト。 +     チャットデータ本体のリスト。 """ - # if jsn is None: - # return {'timeoutMs':0,'continuation':None},[] - # if jsn['response']['responseContext'].get('errors'): - # raise ResponseContextError('動画に接続できません。' - # '動画IDが間違っているか、動画が削除/非公開の可能性があります。') - # contents=jsn['response'].get('continuationContents') - '''配信が終了した場合、もしくはチャットデータが取得できない場合''' + if contents is None: + '''配信が終了した場合、もしくはチャットデータが取得できない場合''' raise NoContentsException('チャットデータを取得できませんでした。') cont = contents['liveChatContinuation']['continuations'][0] @@ -65,7 +60,8 @@ class Parser: raise NoContinuationsException('No Continuation') metadata = (cont.get('invalidationContinuationData') or cont.get('timedContinuationData') or - cont.get('reloadContinuationData') + cont.get('reloadContinuationData') or + cont.get('liveChatReplayContinuationData') ) if metadata is None: unknown = list(cont.keys())[0]