某些网站如何下载YouTube标题?
这是Does YouTube API forbid to download video captions if you are not it's owner?,Get YouTube captions和Does 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将自己(甚至youtubepartner
和youtube.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版本?他们只是从视频本身或其他什么东西?
发送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
貌似最后一个例子是特殊与两个字幕轨道是asr
(checked with Chrome -> Inspect -> Network
),因此你需要省略字幕name
参数部分。不幸的是,这种差异在YouTube视频的设置轮中不可见。
有由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
您可以检查它在网络选项卡中,同时切换的闭合字幕按钮:
谢谢,这是迄今为止最好的答案,但请参阅我对ASR字幕的评论。知道吗? https://stackoverflow.com/questions/46864428/how-do-some-sites-download-youtube-captions#comment80807861_46864428 – ryanbrainard
任何想法,即使已经提供了'lang',为什么在某些视频上需要'name'参数?例如,如果没有'name = Korean',这个URL'https://www.youtube.com/api/timedtext?v = 7068mw-6lmI&lang = ko&name = Korean'将不起作用。其他人很好。我认为这个视频上的ASR字幕可能有些事要做,因为还有自动生成的韩文字幕,所以也许是区分,但只是一个猜测。 – ryanbrainard
任何链接,比如你是不是能够得到他们,但你可以通过提到的网站获取它们吗? –
@JanisS。以下是一个示例:https://youtu.be/0db1_qWZjRA,它解析为字幕标识zMTLb41gaOS5LWeeAi0ribdiUBImBdqb,然后失败,并显示403 – ryanbrainard
感谢您对非官方'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