检索超过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_id
和max_timestamp
参数,它们允许通过检索max_timestamp
max_id
或max_timestamp
之前的媒体来对任何给定用户的最新媒体进行max_timestamp
。 由于每条评论都带有created_time
和id
属性,我试图为各种评论ID和时间戳添加max_id
和max_timestamp
的参数(都是自己的和一起的),试图通过评论进行翻页。 我的尝试都没有奏效。
除非有人提出另一个build议,否则我现在处于停滞状态。
具体例子
使用Instagram API控制台 ,我采取了以下步骤尝试获取此照片的所有评论。
- 为自己的
OAuth2
令牌进行身份validation - 对
coltonlhaynes
进行用户search查询以获取用户id: 9610843
- 使用户最近的媒体查询为用户ID:
9610843
获取最新的媒体 - 收集有关最新媒体(上述链接的照片)的信息
- 媒体
id: 698057751201132903_9610843
- 评论
count: 1375
- 媒体
- 对介质ID进行媒体评论查询:
698057751201132903_9610843
获取最新评论 - 收集最近最less评论的信息
-
created time: 1397460230
- 评论
id: 698269477955776593
-
- 对介质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));
它都会返回一个图片的评论数组。