未验证 提交 45261e06 编写于 作者: C coletdjnz 提交者: GitHub

[youtube:comments] Fix error handling and add `itct` to params (#446)

Should close #439 (untested)

Authored by: colethedj
上级 49c258e1
......@@ -1731,6 +1731,8 @@ def extract_thread(parent_renderer):
'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 @@ def extract_thread(parent_renderer):
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')
if err_msg:
last_error = err_msg
continue
# TODO: not tested, merged from old extractor
err_msg = browse.get('externalErrorMessage')
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册