【发布时间】:2013-07-21 09:59:53
【问题描述】:
我正在尝试寻找以编程方式获取 Instagram 视频的嵌入链接。不幸的是,Instagram 的 oEmbed 端点似乎将视频视为照片,并且只返回关键帧图像,而不是提供嵌入链接。
有谁知道无需手动访问该视频的页面即可检索 Instagram 视频的嵌入链接的方法?
【问题讨论】:
我正在尝试寻找以编程方式获取 Instagram 视频的嵌入链接。不幸的是,Instagram 的 oEmbed 端点似乎将视频视为照片,并且只返回关键帧图像,而不是提供嵌入链接。
有谁知道无需手动访问该视频的页面即可检索 Instagram 视频的嵌入链接的方法?
【问题讨论】:
根据Instagram's API site,对视频对象的GET /media/media-id 请求会返回一个JSON 对象,其中包含您在“data.videos.low_resolution.url”中所需的信息。
我使用以下代码成功地将他们的示例请求返回的视频嵌入到网页中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Video Embed Test</title>
</head>
<body>
<video width="480" height="480" controls>
<source src="http://distilleryvesper9-13.ak.instagram.com/090d06dad9cd11e2aa0912313817975d_102.mp4"
type="video/mp4"/>
</video>
</body>
</html>
【讨论】:
/embed/ URL 只是使用 HTML5 视频,而不是 Flash 嵌入或任何东西。所以这绝对是一个合适的解决方案,而且比我找到的那个更灵活。
GET /media/{media-id} 是deprecated since April 2018
我无法找到检索嵌入 URL 的方法,但是在检查 Instagram 提供的嵌入后,我能够确定如何根据它生成媒体 API 端点提供的信息。基本上,您只需将/embed/ 附加到媒体短网址的末尾即可。所以它在 Django 模板中看起来像这样:
<iframe src="{{ media.short_link }}embed/" width="612" height="710" frameborder="0" scrolling="no" allowtransparency="true"></iframe>
作为一个有趣的附注,我还发现您可以在嵌入代码中更改宽度和高度,并且它可以毫无问题地工作(至少当您将尺寸减半时,我没有尝试其他任何方法)。
【讨论】:
获取 Instagram 视频 URL 的一种简单方法是在您尝试定位的帖子末尾添加?__a=1(即https://www.instagram.com/p/BqTd8dhFKLN/?__a=1)。
然后您可以导航到["graphql"]["shortcode_media"]["video_url"] 或["graphql"]["shortcode_media"]["edge_sidecar_to_children"]["edges"][carousel_number]["node"]["video_url"](取决于帖子是否为轮播),这将为您提供视频网址。
【讨论】: