获取YouTube视频的闭路字幕“CC”

15
有没有人知道如何获取任何具有字幕的YouTube视频的CC?我知道API 2.0文档提到它仅适用于视频所有者...但我能够获得一些视频的字幕,即使我不是所有者...
可以使用两个API(或链接到API)。它们都指向timpedtext API。在我提到它们之前,我们应该注意API需要的参数。它们是:
- lang: {en, fr,...} 必需。 - v: {video ID} 必需。 - name: 轨道名称,仅在设置时需要。(这就是我的问题所在。) - tlang: 翻译成语言。可选(如果您想将CC翻译为其他语言,则应设置。)
API链接如下:
  1. http://video.google.com/timedtext?lang=fr&v=PILzP-bIeLo&name=french 请注意,如果您删除name=French或将其设置为其他内容,上述示例将不返回任何内容...

  2. http://www.youtube.com/api/timedtext?v=zzfCVBSsvqA&lang=en 请注意,如果您设置了name=...,此示例将不返回任何内容。

  3. http://www.youtube.com/api/timedtext?v=ZdP0KM49IVk&lang=en 然而,实际视频已经有字幕。

示例3未返回CC数据。

因此,我猜测示例3需要设置name参数。 我的主要问题是如何找到是否设置了name参数。如果已设置,我如何知道它是什么?


可能是从YouTube视频提取自动字幕的重复问题。 - maxymoo
如果有人感兴趣,我在这里编写了一个现代的ES6/class/fetch YouTube字幕抓取器:https://dev59.com/lVwY5IYBdhLWcg3w2K3c#58435817 - Mr. Polywhirl
4个回答

17

[更新]: 我们推荐的方法是直到 Google 最近停用它为止(截至 2021 年 12 月)。

你的第一个示例应该可以在不使用 name= 部分的情况下正常工作。 这对我来说已经足够了:

video.google.com/timedtext?lang={languageID}&v={videoId}

要从之前的回答中获取英文CC版本,代码如下:

http://video.google.com/timedtext?lang=en&v=zzfCVBSsvqA

我在这里创建了一个功能性的JavaScript实现:https://dev59.com/lVwY5IYBdhLWcg3w2K3c#58435817 - Mr. Polywhirl
6
截至今日,这似乎不再起作用。 - Peter Olson

10

1
自2021年11月起,带有“list”参数的请求停止工作了,是否有任何信息或可能的解决方法? - Kos

10

有没有办法获取downsub.com的源代码? - Lydia halls
2
另外,模块youtube-captions-scraper不起作用!! - Lydia halls

-2

如果 video.google.com 无法获取您的闭路字幕文件,或者您不想使用 XML 格式的文件,而是想使用 SRT(请参见下面的注释),请尝试:

CC SUBS

注:SRT 可以转换为几乎任何格式 - 使用免费字幕工具进行转换,或者通过将 \n\n 替换为 |\n 替换为 ;,然后将 | 替换为 \n,您可以获得一个 CSV 文件,例如可以在电子表格中打开。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接