我想从YouTube视频中获取字幕,我已经看到,对于被人类通过HTTP请求订阅的视频来说,这很容易做到,如下所示:
https://www.youtube.com/api/timedtext?v=[LINK]&lang=en
当我尝试使用自动生成的字幕进行操作时,问题就出现了,因为它给了我一个空白页。
我尝试转到chrome的网络选项卡以了解浏览器执行哪种HTTP请求,我发现它使用相同的链接,但每个youtube视频中都有更具体的参数:
签名:两个十六进制数字,由一个点分隔,每个
点长度为 40过期:长度为 10 的十进制数
其他参数是相等的,所以我需要弄清楚如何获取它们。我找不到任何可以帮助我解决此特定问题的 API。
那么,为什么要检查网络调用并从那里弄清楚。我认为谷歌使用 protobuf 传输数据,所以祝你好运尝试解密参数。
为什么不使用他们的官方 API 并以正确合法的方式进行操作?
你想要的是字幕。 以下是有关其 API 的文档: https://developers.google.com/youtube/v3/docs/captions
您可能希望首先调用"list"方法来获取视频的所有可用字幕轨道的列表。然后使用"下载"方法来获取字幕。
上述指向文档的链接还包括您需要的代码示例。
另一种方法是:
1( 呼叫 http://www.youtube.com/get_video_info?&video_id=videoID
2( 将响应解析为查询字符串(URL 编码字符串(
3(将字符串转换为数组/对象
4( 用于获取字幕轨道(包括自动生成的字幕(的 URL 将出现在"player_response"属性中。