mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-24 05:36:56 +01:00
[extractor/youtube] Fix comment loop detection for pinned comments (#6714)
Pinned comments may repeat a second time - this is expected. Fixes https://github.com/yt-dlp/yt-dlp/issues/6712 Authored by: coletdjnz
This commit is contained in:
parent
68be95bd0c
commit
141a8dff98
@ -3316,9 +3316,17 @@ def extract_thread(contents):
|
|||||||
comment = self._extract_comment(comment_renderer, parent)
|
comment = self._extract_comment(comment_renderer, parent)
|
||||||
if not comment:
|
if not comment:
|
||||||
continue
|
continue
|
||||||
|
is_pinned = bool(traverse_obj(comment_renderer, 'pinnedCommentBadge'))
|
||||||
|
comment_id = comment['id']
|
||||||
|
if is_pinned:
|
||||||
|
tracker['pinned_comment_ids'].add(comment_id)
|
||||||
# Sometimes YouTube may break and give us infinite looping comments.
|
# Sometimes YouTube may break and give us infinite looping comments.
|
||||||
# See: https://github.com/yt-dlp/yt-dlp/issues/6290
|
# See: https://github.com/yt-dlp/yt-dlp/issues/6290
|
||||||
if comment['id'] in tracker['seen_comment_ids']:
|
if comment_id in tracker['seen_comment_ids']:
|
||||||
|
if comment_id in tracker['pinned_comment_ids'] and not is_pinned:
|
||||||
|
# Pinned comments may appear a second time in newest first sort
|
||||||
|
# See: https://github.com/yt-dlp/yt-dlp/issues/6712
|
||||||
|
continue
|
||||||
self.report_warning('Detected YouTube comments looping. Stopping comment extraction as we probably cannot get any more.')
|
self.report_warning('Detected YouTube comments looping. Stopping comment extraction as we probably cannot get any more.')
|
||||||
yield
|
yield
|
||||||
else:
|
else:
|
||||||
@ -3348,7 +3356,9 @@ def extract_thread(contents):
|
|||||||
current_page_thread=0,
|
current_page_thread=0,
|
||||||
total_parent_comments=0,
|
total_parent_comments=0,
|
||||||
total_reply_comments=0,
|
total_reply_comments=0,
|
||||||
seen_comment_ids=set())
|
seen_comment_ids=set(),
|
||||||
|
pinned_comment_ids=set()
|
||||||
|
)
|
||||||
|
|
||||||
# TODO: Deprecated
|
# TODO: Deprecated
|
||||||
# YouTube comments have a max depth of 2
|
# YouTube comments have a max depth of 2
|
||||||
|
Loading…
Reference in New Issue
Block a user