aboutsummaryrefslogtreecommitdiffstats
path: root/youtube
diff options
context:
space:
mode:
authorJesus <heckyel@hyperbola.info>2025-03-08 16:37:33 -0500
committerJesus <heckyel@hyperbola.info>2025-03-08 16:37:33 -0500
commit1153ac8f24fa775c367eec13a235b5cfca530a12 (patch)
tree744748cac4982d5c78a97082c22f37a24bff748b /youtube
parentc256a045f91d36463642af2f285d0b77cc3e9d3e (diff)
downloadyt-local-1153ac8f24fa775c367eec13a235b5cfca530a12.tar.lz
yt-local-1153ac8f24fa775c367eec13a235b5cfca530a12.tar.xz
yt-local-1153ac8f24fa775c367eec13a235b5cfca530a12.zip
Fix NoneType inside comments.py
Bug: Traceback (most recent call last): File "/home/rusian/yt-local/youtube/comments.py", line 180, in video_comments post_process_comments_info(comments_info) File "/home/rusian/yt-local/youtube/comments.py", line 81, in post_process_comments_info comment['author'] = strip_non_ascii(comment['author']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rusian/yt-local/youtube/util.py", line 843, in strip_non_ascii stripped = (c for c in string if 0 < ord(c) < 127) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: 'NoneType' object is not iterable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "src/gevent/greenlet.py", line 900, in gevent._gevent_cgreenlet.Greenlet.run File "/home/rusian/yt-local/youtube/comments.py", line 195, in video_comments comments_info['error'] = 'YouTube blocked the request. IP address: %s' % e.ip ^^^^ AttributeError: 'TypeError' object has no attribute 'ip' 2025-03-08T01:25:47Z <Greenlet at 0x7f251e5279c0: video_comments('hcm55lU9knw', 0, lc='')> failed with AttributeError
Diffstat (limited to 'youtube')
-rw-r--r--youtube/comments.py8
-rw-r--r--youtube/util.py2
2 files changed, 6 insertions, 4 deletions
diff --git a/youtube/comments.py b/youtube/comments.py
index 92a89e1..1ff1a21 100644
--- a/youtube/comments.py
+++ b/youtube/comments.py
@@ -53,7 +53,7 @@ def request_comments(ctoken, replies=False):
'hl': 'en',
'gl': 'US',
'clientName': 'MWEB',
- 'clientVersion': '2.20240328.08.00',
+ 'clientVersion': '2.20210804.02.00',
},
},
'continuation': ctoken.replace('=', '%3D'),
@@ -78,7 +78,7 @@ def single_comment_ctoken(video_id, comment_id):
def post_process_comments_info(comments_info):
for comment in comments_info['comments']:
- comment['author'] = strip_non_ascii(comment['author'])
+ comment['author'] = strip_non_ascii(comment['author']) if comment.get('author') else ""
comment['author_url'] = concat_or_none(
'/', comment['author_url'])
comment['author_avatar'] = concat_or_none(
@@ -189,10 +189,10 @@ def video_comments(video_id, sort=0, offset=0, lc='', secret_key=''):
comments_info['error'] += '\n\n' + e.error_message
comments_info['error'] += '\n\nExit node IP address: %s' % e.ip
else:
- comments_info['error'] = 'YouTube blocked the request. IP address: %s' % e.ip
+ comments_info['error'] = 'YouTube blocked the request. Error: %s' % str(e)
except Exception as e:
- comments_info['error'] = 'YouTube blocked the request. IP address: %s' % e.ip
+ comments_info['error'] = 'YouTube blocked the request. Error: %s' % str(e)
if comments_info.get('error'):
print('Error retrieving comments for ' + str(video_id) + ':\n' +
diff --git a/youtube/util.py b/youtube/util.py
index 356a795..c59fae8 100644
--- a/youtube/util.py
+++ b/youtube/util.py
@@ -840,6 +840,8 @@ def call_youtube_api(client, api, data):
def strip_non_ascii(string):
''' Returns the string without non ASCII characters'''
+ if string is None:
+ return ""
stripped = (c for c in string if 0 < ord(c) < 127)
return ''.join(stripped)