From 545b4c64c55a99e502205e9ed36512c4a96a01ff Mon Sep 17 00:00:00 2001 From: Nicholas Defranco Date: Sun, 12 Mar 2023 11:01:52 -0400 Subject: [PATCH 1/2] [extractor/youtube] Fix parsing `comment_count` with unit suffix The `comment_count` extraction logic now uses the internal `self._get_count()` method to reliably extract the count. Closes #5849 --- yt_dlp/extractor/youtube.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index d7cd0dc62a2..de6b3b58c8f 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -4265,11 +4265,11 @@ def process_language(container, base_url, lang_code, sub_name, query): info['comment_count'] = traverse_obj(initial_data, ( 'contents', 'twoColumnWatchNextResults', 'results', 'results', 'contents', ..., 'itemSectionRenderer', - 'contents', ..., 'commentsEntryPointHeaderRenderer', 'commentCount', 'simpleText' + 'contents', ..., 'commentsEntryPointHeaderRenderer', 'commentCount' ), ( 'engagementPanels', lambda _, v: v['engagementPanelSectionListRenderer']['panelIdentifier'] == 'comment-item-section', 'engagementPanelSectionListRenderer', 'header', 'engagementPanelTitleHeaderRenderer', 'contextualInfo', 'runs', ..., 'text' - ), expected_type=int_or_none, get_all=False) + ), expected_type=self._get_count, get_all=False) try: # This will error if there is no livechat initial_data['contents']['twoColumnWatchNextResults']['conversationBar']['liveChatRenderer']['continuations'][0]['reloadContinuationData']['continuation'] From a7b66d3f6932a0f0d4a25aa72ed3af67b51616a1 Mon Sep 17 00:00:00 2001 From: Nicholas Defranco Date: Mon, 13 Mar 2023 17:14:29 -0400 Subject: [PATCH 2/2] Fix: Edit `traverse_obj()`'s default parameter --- yt_dlp/extractor/youtube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index de6b3b58c8f..2464757fdfe 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -4268,7 +4268,7 @@ def process_language(container, base_url, lang_code, sub_name, query): 'contents', ..., 'commentsEntryPointHeaderRenderer', 'commentCount' ), ( 'engagementPanels', lambda _, v: v['engagementPanelSectionListRenderer']['panelIdentifier'] == 'comment-item-section', - 'engagementPanelSectionListRenderer', 'header', 'engagementPanelTitleHeaderRenderer', 'contextualInfo', 'runs', ..., 'text' + 'engagementPanelSectionListRenderer', 'header', 'engagementPanelTitleHeaderRenderer', 'contextualInfo' ), expected_type=self._get_count, get_all=False) try: # This will error if there is no livechat