【发布时间】:2021-11-19 21:14:52
【问题描述】:
我正在使用 YouTube V3 API 检查视频是否有任何字幕。我在这种情况下使用的示例视频是 ID TM3sNH7c5B4。
我的请求如下所示:
def get_youtube_caption_info(client, video_id):
caption_request = client.captions().list(
part='snippet,id',
videoId=video_id,
)
caption_response = caption_request.execute()
return bool(caption_response.get('items'))
客户端是这样配置的:
client = googleapiclient.discovery.build('youtube', 'v3', developerKey="XXXXXXXXXXXXXX")
即使 YouTube 视频播放器没有显示任何字幕选项,它仍会为此视频返回 True:
我添加了一个调试器,这就是caption_response 对象的样子:
{'etag': 'NdGxn_2Z1vhRrxgcbKpxtLQFSRs',
'items': [{'etag': 'tOfKO2jRztEqtGHfb_d6vQK_iKU',
'id': 'Gu_N5R6RDRgeXbUUjChlxQGFyZrSXyjtBetX-fj5KDE=',
'kind': 'youtube#caption',
'snippet': {'audioTrackType': 'unknown',
'isAutoSynced': False,
'isCC': False,
'isDraft': False,
'isEasyReader': False,
'isLarge': False,
'language': 'en',
'lastUpdated': '2020-10-06T10:28:19.545342Z',
'name': '',
'status': 'serving',
'trackKind': 'asr',
'videoId': 'TM3sNH7c5B4'}}],
'kind': 'youtube#captionListResponse'}
看起来视频播放器应该显示自动字幕选项,但那里什么也没有。这是 YouTube 方面的错误还是我遗漏了什么?
【问题讨论】:
-
我从未使用过 youtube 的 api,但由于
items包含一些值(因此它不是 None),因此将(caption_response.get('items'))转换为布尔值将始终返回 true,无论这些是什么值是。 -
@TDG 不正确。
'items'是一个列表,将一个空列表转换为 bool 会给你一个 false。 -
但在您的示例中,列表不为空。
-
我应该在第一条评论中写 'empty' 而不是 'none'/
-
@Brodan 考虑然后在issue tracker 中发布这个问题 - 它可能是一个错误或一些未记录的行为。
标签: python youtube youtube-api youtube-data-api