检索超过150个Instagram的评论

问题

即使媒体有150多条评论,我也希望能够看到Instagram媒体上的所有评论。 截至目前,在Instagram网站上观看最近的20条评论似乎是不可能的,如果用户使用Instagram API控制台或Instagram API库 ,最近的150条评论将返回为无分页选项或查看补充评论。

我所尝试的

当然,我首先在提供的控制台和我自己的环境中尝试了logging的媒体评论查询 。 在这两种情况下,最多返回150条评论。 难住,我开始在网上寻找更多的信息。

仔细阅读了Instagram API文档 ,在Instagram API控制台中testing了各种端点,并阅读了Instagram标签和Instagram API的各种StackOverflow问题。关于几个Instagram主题的Google Group问题,我想知道是否有机会logging某些东西我可以试试。

用户最近的媒体端点文档包含max_idmax_timestamp参数,它们允许通过检索max_timestamp max_idmax_timestamp之前的媒体来对任何给定用户的最新媒体进行max_timestamp 。 由于每条评论都带有created_timeid属性,我试图为各种评论ID和时间戳添加max_idmax_timestamp的参数(都是自己的和一起的),试图通过评论进行翻页。 我的尝试都没有奏效。

除非有人提出另一个build议,否则我现在处于停滞状态。

具体例子

使用Instagram API控制台 ,我采取了以下步骤尝试获取此照片的所有评论。

  1. 为自己的OAuth2令牌进行身份validation
  2. coltonlhaynes进行用户search查询以获取用户id: 9610843
  3. 使用户最近的媒体查询为用户ID: 9610843获取最新的媒体
  4. 收集有关最新媒体(上述链接的照片)的信息
    • 媒体id: 698057751201132903_9610843
    • 评论count: 1375
  5. 对介质ID进行媒体评论查询: 698057751201132903_9610843获取最新评论
  6. 收集最近最less评论的信息
    • created time: 1397460230
    • 评论id: 698269477955776593
  7. 对介质ID为698057751201132903_9610843的媒体评论查询使用以下附加查询参数string尝试翻阅评论,但获得与步骤#6相同的结果
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230

请注意

据我所知,这个问题没有解决办法,但是由于Instagram开发小组已经表示 ,他们将不再监控Google Group,而是监控StackOverflow,而是将其放在这里。

好吧,这将是一个非常“黑客”的解决scheme,我目前没有设置自己做(由于缺乏在家里的ADSL),但我可以提供一个一步一步的指导,我将如何处理这个问题。

首先,您需要一个名为“Charles Web Debuging Proxy”的工具

在网站上有一个关于如何在charles中启用“SSLdebugging”的教程(这将要求你在你的移动设备上安装一个新的“根证书”,诱使它认为由charles签名的https交易实际上是签名的通过instagram.com)

现在设置您的移动设备以通过所述代理路由所有请求(必须将其安装在本地Wi-Finetworking上)。

请转至https://www.google.com并检查查尔斯是否logging了请求和响应。;

一旦这一切都设置正确,那么你可以看看instagram应用程序本身用来生成评论页面的API调用。

这里的通用答案是“ 不,通过常规端点是不可能的 ”。

Instagram更新费率限制2015年11月17日之后 )。 Instagram平台上的所有速率限制都是针对每个访问令牌单独控制的,并且在一个滑动的1小时窗口中进行控制。 在沙盒模式中,实时应用比应用具有更高的速率限制。

在全球范围内的下一个限制:

全球汇率限制

全局速率限制适用于包含每个访问令牌在1小时滑动窗口内由应用所做的所有API调用,而不pipe特定的端点如何。 费率限制也适用于无效或格式不正确的请求。

  • 沙箱速率限制:500 /小时
  • 实时速率限制:5000 /小时

另外对评论终结点的限制:

端点特定的速率限制

用于发布的端点(POST或DELETE)具有在每个端点上应用的速率限制。 您的OAuth客户端对这些端点的任何呼叫也计入上述全球速率限制。

  • 沙箱 /媒体/媒体ID / 评论 :30 /小时
  • 现场 /媒体/媒体ID / 评论 :60 /小时

如果您的应用程序超出了任何这些速率限制,您将收到一个HTTP响应代码为429 (Too Many Requests)响应。

只要Instagram平台以每个access token基础来控制它,您就可以使用带有多个访问令牌的multithreading来实现更大的限制。 但是有一些注意事项:1.不是所有东西都可以与多个访问令牌并行,因为上下文会有所不同。 2.这可能与Platform Policy和TOS相矛盾

这根本不是“哈克”。

正如Instagram给出的链接,你可以在这里收到所有的评论: https : //instagram.com/developer/endpoints/comments/

所有你需要做的就是循环Instagram给你的链接。 我已经这样做了。 我使用Api来做到这一点。

  public function getUserMediaComments($id, $limit = 0) { return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit)); } 

$ id是图片的media_id。 如果您使用图片编号对该function进行预览,您将收到所有评论。

当我发现这种方式并不难。

你也可以在这样的情况下这样做。 :

 $comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token)); 

它都会返回一个图片的评论数组。