某些网站如何下载YouTube字幕?

时间:2017-10-21 14:41:01

标签: youtube-api youtube-data-api

这有点Does YouTube API forbid to download video captions if you are not it's owner?Get YouTube captionsDoes YouTube API forbid to download video captions if you are not it's owner?的重复问题,除非您通过YouTube API下载字幕,否则基本上都说不可能,除非您是否未启用所有者或第三方贡献;但是,我的问题是,http://downsub.com/http://www.lilsubs.com/等网站如何访问所有字幕?

换句话说,当我自己访问YouTube API时(即使使用youtubepartneryoutube.force-ssl范围),我只能下载某些视频的字幕,但是当我尝试失败的相同视频时对于我在这些其他网站上403: The permissions associated with the request are not sufficient to download the caption track. The request might not be properly authorized, or the video order might not have enabled third-party contributions for this caption.,它工作正常。我假设他们使用YouTube API访问字幕,但他们使用了什么特别的酱?一些特殊的合作伙伴关一个不同的API版本?他们只是从视频本身或其他东西上刮下来的吗?

2 个答案:

答案 0 :(得分:6)

发送GET请求:

[RELEASE]

评论中的视频示例:http://video.google.com/timedtext?lang=ko&v=0db1_qWZjRA

让我们看看你的另一个例子,即https://www.youtube.com/watch?v=7068mw-6lmI(我同意你评论中的差异化部分)。

视频有多个字幕

  • 英文
  • 韩国语
  • 西班牙语
  • 韩语(自​​动生成)也称为asr(自动语音识别)

这些代表副标题http://video.google.com/timedtext?lang={LANG}&v={VIDEOID} 参数(即名称=英文)。

name代表国家/地区代码。 在您的示例中:lang

如果字幕轨道可用,则可以从中进行翻译,即使用https://www.youtube.com/api/timedtext?lang=es-MX&v=7068mw-6lmI&name=Spanish参数。

tlang

这将是我对这些网站正在使用的内容的出价,即可用字幕轨道的翻译(通过尝试使用没有字幕轨道的视频作为其网站之一的输入来确认)。

至于https://www.youtube.com/api/timedtext?lang=en&v=7068mw-6lmI&name=English&tlang=lv https://www.youtube.com/api/timedtext?lang=ko&v=7068mw-6lmI&name=Korean&tlang=lv 签名似乎总是需要签名,但只要其中一个字幕轨道可用,您就可以将其用于翻译。例如。在OP评论示例中:

asr

看起来最后一个示例是特殊的,两个字幕轨道都是https://www.youtube.com/api/timedtext?lang=en&v=vx6NCUyg1NE&tlang=lv asr),因此您需要省略字幕checked with Chrome -> Inspect -> Network参数部分。遗憾的是,这种差异在YouTube视频的设置轮中不可见。

答案 1 :(得分:3)

Youtube使用了非官方API:

https://www.youtube.com/api/timedtext?lang={LANG}&v={VIDEO_ID}

LANG这里是ISO 639-1 2 letter country code。对于你的例子,它将是:

https://www.youtube.com/api/timedtext?lang=ko&v=0db1_qWZjRA

您可以在切换隐藏字幕按钮时在网络标签中查看它:

enter image description here