获取只有字幕 Youtube API 的视频列表

Posted

技术标签:

【中文标题】获取只有字幕 Youtube API 的视频列表【英文标题】:Get List of Videos that Only Have Subtitles Youtube API 【发布时间】:2020-11-04 15:28:30 【问题描述】:

我有一个可以使用 Youtube API 搜索视频的 Python 代码。 我的输出目标是检索只有字幕/CC 的视频,就像 Youtube Web 上的搜索过滤器一样。

我当前的代码:

videos = []
def get_videos_by_query(query: str, maxResults: int = 50, pageToken: str = None):
    youtube = build(YOUTUBE_API_SERVICE_NAME,
              YOUTUBE_API_VERSION,
              developerKey=DEVELOPER_KEY)
    try:
        search_response = youtube.search().list(
            part="id,snippet",
            order='date',
            maxResults=maxResults,
            pageToken=pageToken,
            q=query
            ).execute()

        for search_result in search_response.get("items", []):
            if search_result["id"]["kind"] == "youtube#video":
                videoId = search_result["id"]["videoId"]
                data = videoId
                videos.append(data)

    except Exception as e:
        print(e)

我怎样才能做到这一点?

【问题讨论】:

它被称为:"isCC": True or False, # 表示曲目是否包含针对聋人和听力障碍的隐藏字幕。默认值为 false。。阅读v3.captions 【参考方案1】:

根据Search.list API端点的文档,要对获得的结果集进行所需的过滤,您应该使用以下参数:

videoCaption(字符串)

videoCaption 参数指示 API 是否应根据视频搜索结果是否有字幕来过滤它们。如果为此参数指定值,则还必须将type 参数的值设置为video

可接受的值为:

any – 不要根据字幕可用性过滤结果。 closedCaption – 仅包含带字幕的视频。 none – 仅包含没有字幕的视频。

因此,请将您对上述youtube.search().list() 的呼叫替换为以下呼叫:

search_response = youtube.search().list(
        part="id,snippet",
        order='date',
        type='video',
        videoCaption='closedCaption',
        maxResults=maxResults,
        pageToken=pageToken,
        q=query
        ).execute()

请注意,通过此更改,以下代码变得多余:

if search_result["id"]["kind"] == "youtube#video":

这是因为,通过在 API 端点的调用中使用type='video',获得的结果集中的每个项目都必然是指一个视频。

【讨论】:

以上是关于获取只有字幕 Youtube API 的视频列表的主要内容,如果未能解决你的问题,请参考以下文章

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

没有用户 OAuth 过程的 YouTube API

通过 YouTube 数据 API [Python] 下载非自有视频的隐藏式字幕

如何使用 R 获取 YouTube 视频的字幕?

如何将 youtube 字幕放入列表中?

从 API 获取 YouTube 自动转录?