YouTube 字幕 API 返回不准确的数据
Posted
技术标签:
【中文标题】YouTube 字幕 API 返回不准确的数据【英文标题】:YouTube captions API returns inaccurate data 【发布时间】: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 中发布这个问题 - 它可能是一个错误或一些未记录的行为。
【参考方案1】:
我曾经使用过 Youtube Data API,但是很久以前,所以不太记得了。
当我尝试为带字幕的视频下载字幕时,我永远不会得到这些。直到后来我才意识到许多频道不会将字幕提供给“公共”使用,即它属于私人数据,未经他们的许可,您无法通过您的应用程序/脚本访问它们。
所以尝试一些随机的频道和视频。这是为我返回标题的稀有 videoID 之一:p6X_5rkkaA-I
视频Link
【讨论】:
以上是关于YouTube 字幕 API 返回不准确的数据的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 Youtube API 在字幕轨道中搜索关键字/时间戳吗?
如何使用 Youtube API 为 Youtube 视频添加字幕?