diff options
Diffstat (limited to 'youtube/comments.py')
| -rw-r--r-- | youtube/comments.py | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/youtube/comments.py b/youtube/comments.py index 1ff1a21..8d03f22 100644 --- a/youtube/comments.py +++ b/youtube/comments.py @@ -155,33 +155,35 @@ def post_process_comments_info(comments_info): def video_comments(video_id, sort=0, offset=0, lc='', secret_key=''): + if not settings.comments_mode: + return {} + + # Initialize the result dict up-front so that any exception path below + # can safely attach an 'error' field without risking UnboundLocalError. + comments_info = {'error': None} try: - if settings.comments_mode: - comments_info = {'error': None} - other_sort_url = ( - util.URL_ORIGIN + '/comments?ctoken=' - + make_comment_ctoken(video_id, sort=1 - sort, lc=lc) - ) - other_sort_text = 'Sort by ' + ('newest' if sort == 0 else 'top') + other_sort_url = ( + util.URL_ORIGIN + '/comments?ctoken=' + + make_comment_ctoken(video_id, sort=1 - sort, lc=lc) + ) + other_sort_text = 'Sort by ' + ('newest' if sort == 0 else 'top') - this_sort_url = (util.URL_ORIGIN - + '/comments?ctoken=' - + make_comment_ctoken(video_id, sort=sort, lc=lc)) + this_sort_url = (util.URL_ORIGIN + + '/comments?ctoken=' + + make_comment_ctoken(video_id, sort=sort, lc=lc)) - comments_info['comment_links'] = [ - (other_sort_text, other_sort_url), - ('Direct link', this_sort_url) - ] + comments_info['comment_links'] = [ + (other_sort_text, other_sort_url), + ('Direct link', this_sort_url) + ] - ctoken = make_comment_ctoken(video_id, sort, offset, lc) - comments_info.update(yt_data_extract.extract_comments_info( - request_comments(ctoken), ctoken=ctoken - )) - post_process_comments_info(comments_info) + ctoken = make_comment_ctoken(video_id, sort, offset, lc) + comments_info.update(yt_data_extract.extract_comments_info( + request_comments(ctoken), ctoken=ctoken + )) + post_process_comments_info(comments_info) - return comments_info - else: - return {} + return comments_info except util.FetchError as e: if e.code == '429' and settings.route_tor: comments_info['error'] = 'Error: YouTube blocked the request because the Tor exit node is overutilized.' |
