[youtube:comments] Fix comment section not being extracted in new layouts (#1324)

Co-authored-by: coletdjnz, pukkandan
This commit is contained in:
coletdjnz 2021-10-18 15:58:42 +13:00 committed by GitHub
parent 373475f035
commit aae16f6ed9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 2 deletions

View File

@ -2314,6 +2314,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
continuation_token = self._generate_comment_continuation(video_id) continuation_token = self._generate_comment_continuation(video_id)
continuation = self._build_api_continuation_query(continuation_token, None) continuation = self._build_api_continuation_query(continuation_token, None)
message = self._get_text(root_continuation_data, ('contents', ..., 'messageRenderer', 'text'), max_runs=1)
if message and not parent:
self.report_warning(message, video_id=video_id)
visitor_data = None visitor_data = None
is_first_continuation = parent is None is_first_continuation = parent is None
@ -2416,8 +2420,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
def _get_comments(self, ytcfg, video_id, contents, webpage): def _get_comments(self, ytcfg, video_id, contents, webpage):
"""Entry for comment extraction""" """Entry for comment extraction"""
def _real_comment_extract(contents): def _real_comment_extract(contents):
yield from self._comment_entries( renderer = next((
traverse_obj(contents, (..., 'itemSectionRenderer'), get_all=False), ytcfg, video_id) item for item in traverse_obj(contents, (..., 'itemSectionRenderer'), default={})
if item.get('sectionIdentifier') == 'comment-item-section'), None)
yield from self._comment_entries(renderer, ytcfg, video_id)
max_comments = int_or_none(self._configuration_arg('max_comments', [''])[0]) max_comments = int_or_none(self._configuration_arg('max_comments', [''])[0])
# Force English regardless of account setting to prevent parsing issues # Force English regardless of account setting to prevent parsing issues