如何获取Instagram媒体项目的短代码以便以后嵌入图片?

时间:2013-11-06 21:54:46

标签: api caching instagram

我想在我的网站上显示与特定标签匹配的Instagram照片。我没有看到一直在搜索所有标签的方法,所以我正在实施一个定时器,定期检查/tags/tag-name/media/recent我想要的标签。然后我缓存了任何尚未见过的媒体的.id属性,因此,如果/tags/tag-name/media/recent不再返回该项,我仍然可以访问该项。

现在我已准备好将图片嵌入我的网站,但我认为保存.id是错误的。第二个可用的嵌入端点 - /p/shortcode/media - 看起来很接近。它会向图像发出重定向,这足以完成我的任务,但它需要一个“短代码”,而不是一个id。

如何获取此短代码?从.shortcode返回的媒体对象没有/tags/tag-name/media/recent属性。我是否应该使用正则表达式来解析.link属性,假设该链接采用http://instagr.am/p/shortcode/形式?或者是否有更好的技术可以记住并稍后显示与我想要的标签匹配的图像?

4 个答案:

答案 0 :(得分:2)

优先于String.split的正则表达式解决方案,这就是我最终做的事情:

//expecting http://instagr.am/p/BWl6P/
var linkrx = /\/p\/([^\/]+)\/$/;
// find /p/, then 1 or more non-slash as capture group 1, then / and EOL
if(igPic.link.match(linkrx) !== null){
  var shortcode = igPic.link.match(linkrx)[1];
};

答案 1 :(得分:1)

别无他法,只需使用link属性中的.split()即可。这将为您提供短代码:

link.split("/")[4]

答案 2 :(得分:1)

这将始终返回路径的最后一个组件

'http://instagr.am/p/D/'.replace(/\/$/i, '').split("/").pop()

因此http://instagr.am/p/D/变为D

TL;博士

  1. 删除任何尾部斜杠(//$/ia/b/c/a/b/c
  2. /a/b/c[a,b,c]
  3. 拆分
  4. 获取[a,b,c]数组中的最后一项(.pop()[a,b,c]c

答案 3 :(得分:0)

/ P /([^/]+)(/.)*$ 这种模式匹配也链接如下: https://instagram.com/p/6H_CiIrdKn/?taken-by=7imet4 https://instagram.com/p/6H_CiIrdKn