Instagram:使用媒体 ID 获取 oEmbed
Instagram: Get oEmbed using Media ID
比如说,我有一个媒体 ID(例如 1075297042445691366_195350057)。如何使用 oEmbed API 获取嵌入 HTML?
This API 只接受简码(不同于媒体 ID)。
或者如何获取媒体 ID 的简码?
API 返回的任何媒体对象都有一个名为 'link' 的字段,它是媒体的 URL 表示。您可以将此 link 用作 oembed 端点的 'url' 参数。
如果以后有人发现这个问题,我会花很多时间来解决它。
此实现的 99.9% 归功于 Nick Hanshaw 的 this answer。我所做的只是将 CDN link 添加到 BigInteger.js 库,这是必需的,但不是 Nick 代码的一部分。这目前正在为我工作,将媒体 ID 作为字符串传递给函数,然后返回 Instagram 照片的完整字符串 URL:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.40/BigInteger.min.js"></script>
<script type="text/javascript">
function getInstagramUrlFromMediaId(media_id) {
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
var shortenedId = '';
media_id = media_id.substring(0, media_id.indexOf('_'));
while (media_id > 0) {
var remainder = bigInt(media_id).mod(64);
media_id = bigInt(media_id).minus(remainder).divide(64).toString();
shortenedId = alphabet.charAt(remainder) + shortenedId;
}
return 'https://www.instagram.com/p/' + shortenedId + '/';
}
</script>
比如说,我有一个媒体 ID(例如 1075297042445691366_195350057)。如何使用 oEmbed API 获取嵌入 HTML?
This API 只接受简码(不同于媒体 ID)。
或者如何获取媒体 ID 的简码?
API 返回的任何媒体对象都有一个名为 'link' 的字段,它是媒体的 URL 表示。您可以将此 link 用作 oembed 端点的 'url' 参数。
如果以后有人发现这个问题,我会花很多时间来解决它。
此实现的 99.9% 归功于 Nick Hanshaw 的 this answer。我所做的只是将 CDN link 添加到 BigInteger.js 库,这是必需的,但不是 Nick 代码的一部分。这目前正在为我工作,将媒体 ID 作为字符串传递给函数,然后返回 Instagram 照片的完整字符串 URL:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.40/BigInteger.min.js"></script>
<script type="text/javascript">
function getInstagramUrlFromMediaId(media_id) {
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
var shortenedId = '';
media_id = media_id.substring(0, media_id.indexOf('_'));
while (media_id > 0) {
var remainder = bigInt(media_id).mod(64);
media_id = bigInt(media_id).minus(remainder).divide(64).toString();
shortenedId = alphabet.charAt(remainder) + shortenedId;
}
return 'https://www.instagram.com/p/' + shortenedId + '/';
}
</script>