2017-10-21 118 views
2

这是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标题?

换句话说,当我访问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版本?他们只是从视频本身或其他什么东西?

+0

任何链接,比如你是不是能够得到他们,但你可以通过提到的网站获取它们吗? –

+0

@JanisS。以下是一个示例:https://youtu.be/0db1_qWZjRA,它解析为字幕标识zMTLb41gaOS5LWeeAi0ribdiUBImBdqb,然后失败,并显示403 – ryanbrainard

+0

感谢您对非官方'timedtext'的评论。这可能适用于我的用例;然而,它似乎不支持没有签名的'kind = asr'(即自动翻译的字幕)。像downsub.com这样的其他网站也包括这些。他们如何做到这一点?以下是一个示例:https://www.youtube.com/watch?v = vx6NCUyg1NE只有英文和印度尼西亚文没有密钥。 ASR字幕也未在此处列出https://www.youtube.com/api/timedtext?v=vx6NCUyg1NE&lang=en&type=list。 – ryanbrainard

回答

3

发送GET请求:

http://video.google.com/timedtext?lang={LANG}&v={VIDEOID} 

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

让我们来看看你的另一个例子,即https://www.youtube.com/watch?v=7068mw-6lmI(我在您的评论表示赞同分化部分) 。

有可用于视频

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

多字幕这些代表字幕name参数(即,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 

这将是我的什么,这些网站都在使用的出价,也就是可用的字幕轨的译文(通过尝试使用无字幕轨输入视频为他们的网站的一个确认)。

至于asr签名似乎总是需要的,但只要其中一个字幕轨道可用,您可以将其用于翻译。例如。在OP评论例如:

https://www.youtube.com/api/timedtext?lang=en&v=vx6NCUyg1NE&tlang=lv 

貌似最后一个例子是特殊与两个字幕轨道是asrchecked with Chrome -> Inspect -> Network),因此你需要省略字幕name参数部分。不幸的是,这种差异在YouTube视频的设置轮中不可见。

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

+0

谢谢,这是迄今为止最好的答案,但请参阅我对ASR字幕的评论。知道吗? https://stackoverflow.com/questions/46864428/how-do-some-sites-download-youtube-captions#comment80807861_46864428 – ryanbrainard

+0

任何想法,即使已经提供了'lang',为什么在某些视频上需要'name'参数?例如,如果没有'name = Korean',这个URL'https://www.youtube.com/api/timedtext?v = 7068mw-6lmI&lang = ko&name = Korean'将不起作用。其他人很好。我认为这个视频上的ASR字幕可能有些事要做,因为还有自动生成的韩文字幕,所以也许是区分,但只是一个猜测。 – ryanbrainard