Merge branch 'hotfix/cannot_fetch_at_0'
This commit is contained in:
@@ -16,7 +16,7 @@ Other features:
|
|||||||
instead of web scraping.
|
instead of web scraping.
|
||||||
|
|
||||||
For more detailed information, see [wiki](https://github.com/taizan-hokuto/pytchat/wiki). <br>
|
For more detailed information, see [wiki](https://github.com/taizan-hokuto/pytchat/wiki). <br>
|
||||||
より詳細な解説は[wiki](https://github.com/taizan-hokuto/pytchat/wiki/Home:)を参照してください。
|
より詳細な解説は[wiki](https://github.com/taizan-hokuto/pytchat/wiki/Home_jp)を参照してください。
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
```python
|
```python
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
pytchat is a python library for fetching youtube live chat without using yt api, Selenium, or BeautifulSoup.
|
pytchat is a python library for fetching youtube live chat without using yt api, Selenium, or BeautifulSoup.
|
||||||
"""
|
"""
|
||||||
__copyright__ = 'Copyright (C) 2019 taizan-hokuto'
|
__copyright__ = 'Copyright (C) 2019 taizan-hokuto'
|
||||||
__version__ = '0.0.5.1.3'
|
__version__ = '0.0.5.2'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
__author__ = 'taizan-hokuto'
|
__author__ = 'taizan-hokuto'
|
||||||
__author_email__ = '55448286+taizan-hokuto@users.noreply.github.com'
|
__author_email__ = '55448286+taizan-hokuto@users.noreply.github.com'
|
||||||
|
|||||||
@@ -233,6 +233,11 @@ class LiveChatAsync:
|
|||||||
self.video_id, self.seektime, self._topchat_only)
|
self.video_id, self.seektime, self._topchat_only)
|
||||||
livechat_json = (await self._get_livechat_json(
|
livechat_json = (await self._get_livechat_json(
|
||||||
continuation, session, headers))
|
continuation, session, headers))
|
||||||
|
reload_continuation = self._parser.reload_continuation(
|
||||||
|
self._parser.get_contents(livechat_json))
|
||||||
|
if reload_continuation:
|
||||||
|
livechat_json = (await self._get_livechat_json(
|
||||||
|
reload_continuation, session, headers))
|
||||||
contents = self._parser.get_contents(livechat_json)
|
contents = self._parser.get_contents(livechat_json)
|
||||||
self._first_fetch = False
|
self._first_fetch = False
|
||||||
return contents
|
return contents
|
||||||
|
|||||||
@@ -66,6 +66,23 @@ class Parser:
|
|||||||
raise ChatParseException('Cannot extract continuation data')
|
raise ChatParseException('Cannot extract continuation data')
|
||||||
return self._create_data(metadata, contents)
|
return self._create_data(metadata, contents)
|
||||||
|
|
||||||
|
def reload_continuation(self, contents):
|
||||||
|
"""
|
||||||
|
When `seektime = 0` or seektime is abbreviated ,
|
||||||
|
check if fetched chat json has no chat data.
|
||||||
|
If so, try to fetch playerSeekContinuationData.
|
||||||
|
This function must be run only first fetching.
|
||||||
|
"""
|
||||||
|
cont = contents['liveChatContinuation']['continuations'][0]
|
||||||
|
if cont.get("liveChatReplayContinuationData"):
|
||||||
|
#chat data exist.
|
||||||
|
return None
|
||||||
|
#chat data do not exist, get playerSeekContinuationData.
|
||||||
|
init_cont = cont.get("playerSeekContinuationData")
|
||||||
|
if init_cont:
|
||||||
|
return init_cont.get("continuation")
|
||||||
|
raise ChatParseException('Finished chat data')
|
||||||
|
|
||||||
def _create_data(self, metadata, contents):
|
def _create_data(self, metadata, contents):
|
||||||
actions = contents['liveChatContinuation'].get('actions')
|
actions = contents['liveChatContinuation'].get('actions')
|
||||||
if self.is_replay:
|
if self.is_replay:
|
||||||
|
|||||||
Reference in New Issue
Block a user