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 v3 中的隐藏式字幕

如何使用 Youtube API 为 Youtube 视频添加字幕?

如何在 YouTube api v3 中获取 YouTube 视频的 cc 字幕

Youtube v3 API 字幕下载

PHP:使用同步标志上传 YouTube v3 API 字幕