检索超过150条Instagram评论


70

问题

我希望能够在任何给定的Instagram媒体上查看所有评论,即使该媒体有150多个评论也是如此。截至目前,似乎不可能在Instagram网站上的某媒体上查看超过20条评论,并且如果使用Instagram API控制台Instagram API库,则返回的最新150条评论没有分页或查看其他注释的选项。

我尝试过的

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

仔细阅读了Instagram API文档,在Instagram API控制台中测试了各种终结点,并阅读了Instagram标记中的各个StackOverflow问题以及关于多个Instagram主题的Instagram API Google Group问题之后,我想知道是否存在未记录的内容我可以尝试。

用户最近媒体端点文档包括了参数max_id,并max_timestamp通过检索该到来之前媒体允许翻阅最近媒体对于任何给定用户说max_idmax_timestamp。由于每个评论自带created_timeid属性,我尝试添加的参数max_idmax_timestamp(包括对自己和一起)的各种评论的ID和时间戳通过的意见,企图页面。我的尝试都没有成功。

除非有人提出其他建议,否则我现在处于停滞状态。

具体例子

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

  1. 通过身份验证以获得OAuth2令牌
  2. 运行用户搜索查询coltonlhaynes以获取用户id: 9610843
  3. 运行用户最近的媒体查询用户ID:9610843以获取最新的媒体
  4. 收集有关最新媒体的信息(上面的链接照片)
    • 媒体 id: 698057751201132903_9610843
    • 评论 count: 1375
  5. 运行媒体评论查询媒体ID:698057751201132903_9610843以获取最新评论
  6. 收集有关最近评论的信息
    • created time: 1397460230
    • 评论 id: 698269477955776593
  7. 运行媒体评论查询媒体ID:698057751201132903_9610843使用以下其他查询参数字符串尝试分页浏览评论,但收到与步骤6相同的结果
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230

请注意

据我所知,没有解决此问题的方法,但是由于Instagram开发团队已声明他们将不再监视Google Group,而是监视StackOverflow,因此,我将其放在此处。


2
非常令人沮丧的是,他们的文档甚至说该端点获得了“媒体对象的完整注释列表”。写得很好的帖子。希望你能找到答案。
Lenny Sirivong 2014年

值得一提的是,点赞终点似乎仅限于120个最新点赞。
AndyRyan 2015年

3
现在,端点描述说:“获取有关媒体对象的最近评论列表。” :)最好是分页至少要有500条评论。那对于大多数用途来说已经足够了……
Alin


1
有任何更新吗?
damirstuhec

Answers:


11

好的,这将是一个非常“棘手的”解决方案,并且我目前还没有准备好自己做(由于家里缺少ADSL),但是我可以提供逐步指南以解决该问题。

首先,您将需要一个名为 “ Charles Web调试代理”的工具。

该站点上有一个教程,介绍如何在charles中启用“ SSL调试”(这将要求您在移动设备上安装新的“ root证书”,以诱使其认为实际上由charles签名的https交易已签名)通过instagram.com)

现在,将您的移动设备设置为通过所述代理路由所有请求(必须将其安装在本地wi-fi网络上。)

请访问https://www.google.com并检查Charles是否同时记录了请求和响应。

一旦所有这些设置正确之后,您就可以查看instagram应用本身用于生成所述评论页面的API调用。


2

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

Instagram更新了速率限制2015年11月17日之后)。Instagram平台上的所有速率限制都是针对每个访问令牌和在1小时滑动窗口中分别控制的。实时应用程序比沙盒模式下的应用程序具有更高的速率限制。

在全局范围内哪个状态下一个限制:

全球速率限制

全局速率限制适用于应用程序在1小时的滑动窗口中每个访问令牌在每个访问令牌中进行的所有API调用,无论特定端点如何。速率限制也适用于无效或格式错误的请求。

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

加上注释端点的单独限制:

端点特定的速率限制

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

  • 沙盒 / media / media-id /评论:30 /小时
  • 实时 / media / media-id /评论:60 /小时

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

只要Instagram平台access token逐个控制它,您便可以使用具有多个访问令牌的多线程来达到更大的限制。但是它有一些警告:1.并非所有事物都可以与多个访问令牌并行,因为上下文会有所不同。2.这可能与平台政策和服务条款相抵触


0

这根本不是“ hacky”。

由于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。如果使用图片ID遍历该功能,则将收到所有注释。

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

您也可以在进行学习的同时这样做。:

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

两者都返回您对图片的评论数组。


2
不,这远不能解决。我不确定你在做什么。您无法收到所有评论。您需要欺骗对其GraphQL端点的请求,以获取超出150个限制的其他注释。
圣先生先生

1
什么?没有可用的151-300项目?
Kiquenet '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.