Instagram/tags/(hashtag)/media/最近的端点未返回分页



我已经尝试了大约6个小时,但没有成功,阅读了我能找到的关于这个主题的每一个stackoverflow问题。

我正试图从一个标签上获得100、200或500张照片:

func hashtags(hashtag: String, nextMaxTagId: String?) -> RequestParamters {
    var params = "/tags/(hashtag)/media/recent|access_token=(accessToken)"
    var parameters = Dictionary<String, AnyObject>()
    parameters["access_token"] = accessToken
    let urlString = "https://api.instagram.com/v1/tags/(hashtag)/media/recent"
    if let nextMaxTagId = nextMaxTagId {
        params += "|max_tag_id=(nextMaxTagId)"
        parameters["max_tag_id"] = nextMaxTagId
    }

    let sig = HMAC.signWithKey(C.InstagramClientSecret(), usingData: params)
    parameters["sig"] = sig
    return (urlString: urlString, parameters: parameters)
}

这是我用来为我的请求构建url和参数的东西。我的第一个请求没有nextMaxTagId,该请求通过后返回20个图像和一个paginationjson。

然后,当我从分页块中提取next_max_tag_id,并使用该参数创建请求时,我得到了另外20个图像,但它们与以前相同,现在我没有得到分页块。

我对我的请求进行了正确的签名(因为我在整个应用程序中的所有其他API请求都顺利通过),并且我没有处于沙盒模式。

编辑:我也尝试过使用min_tag_id=(nextMinTagId),但在下一个请求中仍然没有收到分页。

看起来像:

1) 您使用的Instagram Developer API似乎有一个授权的APIKey,并且您提到您不在沙盒中,因此您处于该api的Production环境中。

我正试图从一个标签中获得100、200或500张照片

2) 这意味着,结合returns 20 images and a pagination json,对于100,您至少需要进行5次调用(100/20==5),200==10500=25

3) 根据开发人员文档速率限制,Production的总上限为5000 req/hour,一些API的限制要小得多(有些是30/60 req/hour)。我不确定我是否看到你达到的tag利率限制,但由于问题提到:

大概6个小时,现在没有

也有可能你每小时都达到了总的小时请求限制。

我肯定知道这不是我喜欢给出的答案,因为它本质上是在说:you're stuck。事实上,我自己以前也玩过利率限制,我发现它们非常有限(双关语完全是有意的)。唯一的另一种选择,尽管不是"光明正大",是从Instagram本身获取所需的信息。我说这不是"光明正大",因为如果你需要在网络抓取中找不到的信息,理论上你可以通过一些小的反向工程(即使用HTTP代理系统地欺骗移动流量)抓取移动API。

最后,API Instagram发布的内容肯定非常有限,在可预见的未来将面临利率限制(除非你能在他们认为有价值的特定合作伙伴关系中以某种方式取消这些限制,尽管我不确定如何实现)。

最新更新