我手上有media_id帖子,我想知道是否有一种方法可以从中创建有效的网址。
例如,如果您手上有一个Facebook帖子ID(xxxx_yyyy),则可以从中创建以下URL(http://facebook.com/ xxxx / posts / yyyy)并直接访问原始帖子。
有没有办法在Instagram上做到这一点?拥有media_id(和user_id)之后,是否可以创建一个帖子网址?
我必须实现客户端JavaScript来解决这个问题,Seano的回答非常宝贵,我很高兴他们提到使用BigInteger库,但是我想使用BigInteger库提供完整的实现,事实证明这是非常必要的。
我从https://www.npmjs.com/package/big-integer下载了BigInteger库。
这是最适合我的功能。
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 + '/';
}
Run Code Online (Sandbox Code Playgroud)
我只想指出,在分配重新计算的media_id时,toString()的用法非常重要,该值仍然是一个字符串以确保使用完整的数字(在我的情况下,media_id为19个字符长)。BigInteger文档还说明了这一点...
请注意,大于9009199254740992且小于-9007199254740992的Javascript数字不能精确表示,因此不会产生确切的结果。如果要处理的数字超出此范围,则最好传入字符串。
干杯!