这有点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 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版本?他们只是从视频本身或其他东西上刮下来的吗?
答案 0 :(得分:6)
发送GET请求:
[RELEASE]
评论中的视频示例:http://video.google.com/timedtext?lang=ko&v=0db1_qWZjRA
让我们看看你的另一个例子,即https://www.youtube.com/watch?v=7068mw-6lmI(我同意你评论中的差异化部分)。
视频有多个字幕
这些代表副标题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
您可以在切换隐藏字幕按钮时在网络标签中查看它: