mirror of https://github.com/yt-dlp/yt-dlp.git
[youtube:comments] Fix error handling and add `itct` to params (#446)
Should close #439 (untested) Authored by: colethedj
This commit is contained in:
parent
49c258e18d
commit
45261e063b
|
@ -1731,6 +1731,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||
'pbj': 1,
|
||||
'type': 'next',
|
||||
}
|
||||
if 'itct' in continuation:
|
||||
query['itct'] = continuation['itct']
|
||||
if parent:
|
||||
query['action_get_comment_replies'] = 1
|
||||
else:
|
||||
|
@ -1776,19 +1778,27 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||
|
||||
response = try_get(browse,
|
||||
(lambda x: x['response'],
|
||||
lambda x: x[1]['response'])) or {}
|
||||
lambda x: x[1]['response']), dict) or {}
|
||||
|
||||
if response.get('continuationContents'):
|
||||
break
|
||||
|
||||
# YouTube sometimes gives reload: now json if something went wrong (e.g. bad auth)
|
||||
if browse.get('reload'):
|
||||
raise ExtractorError('Invalid or missing params in continuation request', expected=False)
|
||||
if isinstance(browse, dict):
|
||||
if browse.get('reload'):
|
||||
raise ExtractorError('Invalid or missing params in continuation request', expected=False)
|
||||
|
||||
# TODO: not tested, merged from old extractor
|
||||
err_msg = browse.get('externalErrorMessage')
|
||||
# TODO: not tested, merged from old extractor
|
||||
err_msg = browse.get('externalErrorMessage')
|
||||
if err_msg:
|
||||
last_error = err_msg
|
||||
continue
|
||||
|
||||
response_error = try_get(response, lambda x: x['responseContext']['errors']['error'][0], dict) or {}
|
||||
err_msg = response_error.get('externalErrorMessage')
|
||||
if err_msg:
|
||||
raise ExtractorError('YouTube said: %s' % err_msg, expected=False)
|
||||
last_error = err_msg
|
||||
continue
|
||||
|
||||
# Youtube sometimes sends incomplete data
|
||||
# See: https://github.com/ytdl-org/youtube-dl/issues/28194
|
||||
|
|
Loading…
Reference in New Issue