有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?
Posted
技术标签:
【中文标题】有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?【英文标题】:Is there a way to get CHAPTERS from a YouTube video embedded via JavaScript? 【发布时间】:2021-11-02 21:33:59 【问题描述】:在包含这个 YouTube iframe API 脚本之后
https://www.youtube.com/iframe_api
可以将 youtube 视频放入容器中(例如“container_id”),并在其页面元素上使用“seekTo()”和“play()”等方法。 (iframe 之外的任何地方)
var player = new YT.Player('container_id',
videoId: 'video_id'
);
可以像YT.get("container_id")
那样访问视频对象。可以通过这样做YT.get("container_id").seekTo(60)
滚动到 1 分钟标记,但我似乎无法在其中找到“章节”对象。 “章节”是由时间戳分隔的视频片段,像这样。
如果有办法将它们作为数组或对象或其他东西获取,但我似乎在YT.get("container_id")
结果对象中找不到它。
生成的 iFrame 确实将它们包含为 html 标签,但它没有像“开始于”或“章节标题”这样的元数据,并且由于 CORS 的恶作剧而无法真正访问。 YouTube iframe api 是否会发送章节数据(如果存在)? (很多视频都没有)
【问题讨论】:
【参考方案1】:我不认为 API 对章节有任何功能。
章节的工作方式是they are derived from the timestamps put in the video description。 因此,虽然这是一种变通方法,但如果您确实想获取视频的章节信息,您可以解析描述以获取时间戳及其名称。
我在 API 页面上快速运行了 Ctrl+F 以查看 iFrame API 是否允许您访问视频描述,但似乎并非如此。不过我可能是错的,在这种情况下请忽略下面的说明。
为了获得描述,如果你有视频 ID,你可以使用 Youtube Data API(不同的 api,所以你可能需要另一个 api 密钥),特别是来自 Videos 的 list method部分。您可以通过传递“sn-p”作为“part”参数的参数来获取描述。
【讨论】:
看来你是对的。 youtube 本身使用什么算法在您认为的视频上生成这些字幕?一个正则表达式?你觉得会是什么?我至少暂时将其标记为答案,但我也同意这是唯一的方法。以上是关于有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?的主要内容,如果未能解决你的问题,请参考以下文章
C 中的嵌入式 python:有没有办法从压缩的 python 存档中正确导入 numpy?
有没有办法在Android上将arraybuffer从javascript传递到java?