From 51a16937891ebb6d419ad21d0189182cb1197430 Mon Sep 17 00:00:00 2001 From: Astound Date: Mon, 22 Jan 2024 05:59:11 +0800 Subject: Fix comment count extraction due to 'K/M' postfixes YouTube now displays 2K comments instead of 2359, for instance --- youtube/__init__.py | 5 ++++- youtube/templates/watch.html | 2 +- youtube/yt_data_extract/watch_extraction.py | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) (limited to 'youtube') diff --git a/youtube/__init__.py b/youtube/__init__.py index b0e8761..64aed56 100644 --- a/youtube/__init__.py +++ b/youtube/__init__.py @@ -54,7 +54,10 @@ def commatize(num): if num is None: return '' if isinstance(num, str): - num = int(num) + try: + num = int(num) + except ValueError: + return num return '{:,}'.format(num) diff --git a/youtube/templates/watch.html b/youtube/templates/watch.html index 9679a28..99dbc6d 100644 --- a/youtube/templates/watch.html +++ b/youtube/templates/watch.html @@ -233,7 +233,7 @@
Comments disabled
{% else %}
- {{ comment_count|commatize }} comment{{'s' if comment_count != 1 else ''}} + {{ comment_count|commatize }} comment{{'s' if comment_count != '1' else ''}}
{% if comments_info %} {{ comments.video_comments(comments_info) }} diff --git a/youtube/yt_data_extract/watch_extraction.py b/youtube/yt_data_extract/watch_extraction.py index 1a926b2..b943d35 100644 --- a/youtube/yt_data_extract/watch_extraction.py +++ b/youtube/yt_data_extract/watch_extraction.py @@ -363,12 +363,12 @@ def _extract_watch_info_mobile(top_level): comment_count_text = extract_str(deep_get(comment_info, 'header', 'commentSectionHeaderRenderer', 'countText')) if comment_count_text == 'Comments': # just this with no number, means 0 comments - info['comment_count'] = 0 + info['comment_count'] = '0' else: - info['comment_count'] = extract_int(comment_count_text) + info['comment_count'] = extract_approx_int(comment_count_text) info['comments_disabled'] = False else: # no comment section present means comments are disabled - info['comment_count'] = 0 + info['comment_count'] = '0' info['comments_disabled'] = True # check for limited state -- cgit v1.2.3