【问题标题】:Retrieving more than 150 Instagram comments检索超过 150 条 Instagram 评论
【发布时间】:2014-05-28 23:07:35
【问题描述】:

问题

我希望能够查看任何给定的Instagram 媒体上的所有 cmets,即使该媒体有超过 150 个 cmets。到目前为止,似乎不可能在 Instagram 网站上查看超过最近 20 cmets 的媒体,如果使用Instagram API ConsoleInstagram API Libraries,则返回最近的 150 cmets,没有分页或查看附加 cmets 的选项。

我所尝试的

当然,我首先在提供的控制台和我自己的环境中尝试了记录在案的media comment query。在这两种情况下,最多返回 150 厘米。被难住了,我开始在网上寻找更多信息。

彻底阅读了Instagram API Documentation,测试了Instagram API Console 中的各种端点,阅读了Instagram 标签中的各种StackOverflow 问题和几个Instagram 主题的Instagram API Google Group 问题,我想知道是否有机会无证,我可以试试。

user recent media endpoint 文档包括max_idmax_timestamp 的参数,这些参数允许通过检索前面提到的max_idmax_timestamp 之前的媒体来翻阅任何给定用户的最新媒体。由于每条评论都带有created_timeid 属性,因此我尝试为各种评论ID 和时间戳添加max_idmax_timestamp 的参数(单独和一起),以尝试通过cmets 进行分页。我的尝试都没有奏效。

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

具体例子

使用Instagram API Console,我采取了以下步骤来尝试获取this photo 的所有cmets。

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

请注意

据我所知,这个问题没有解决方案,但由于 Instagram 开发团队 has stated 表示他们将不再监控 Google 群组,而是监控 StackOverflow,因此我将其放在这里。

【问题讨论】:

  • 他们的文档甚至说这个端点获得了“a full list of comments on a media object”,这非常令人沮丧。写得很好的帖子。希望你能找到答案。
  • 值得一提的是,点赞端点似乎仅限于最近的 120 个点赞。
  • 现在,端点描述说:“获取媒体对象上最近 cmets 的列表。” :) 如果分页至少为 500 cmets,那就太好了。这对于大多数用途来说已经足够了......
  • API 控制台未找到instagram.com/developer/api-console
  • 这方面有什么更新吗?

标签: instagram-api


【解决方案1】:

好的,这将是一个非常“Hacky”的解决方案,我目前还没有准备好自己做这件事(由于家里没有 ADSL),但我可以提供一个分步指南,说明我将如何处理这个问题。

首先你需要一个名为"Charles Web Debuging Proxy"的工具

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

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

转到 https://www.google.com 并检查 charles 是否记录了请求和响应。

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

【讨论】:

    【解决方案2】:

    这根本不是“hacky”。​​

    由于 Instagram 提供了您可以在此处接收所有 cmets 的链接: 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 遍历该函数,您将收到所有 cmets。

    当我发现这种方式时并没有那么难。

    您也可以在探查它的同时这样做。 :

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

    它都会返回图片的 cmets 数组。

    【讨论】:

    • 没有。这远非解决方案。我不确定你在完成什么。您无法收到所有的 cmets。您需要向他们的 GraphQL 端点发送一个请求,以获取超过 150 个限制的额外 cmets。
    • count ?无法获得 151 - 300 件物品?
    【解决方案3】:

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

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

    在全局上下文中哪个状态下一个限制:

    全球速率限制

    应用全局速率限制,包括由 1 小时滑动窗口内每个访问令牌的应用程序,无论 特定端点。速率限制也适用于无效或格式错误 请求。

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

    加上对 cme​​ts 端点的单独限制:

    端点特定的速率限制

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

    • 沙盒 /media/media-id/cmets:30 个/小时
    • 直播 /media/media-id/cmets:60/小时

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

    只要 Instagram 平台根据 access token 对其进行控制,您就可以使用具有多个访问令牌的多线程实现更大的限制。但它有一些警告:1. 并非所有内容都可以与多个访问令牌并行,因为上下文会有所不同。 2.可能与Platform PolicyTOS相矛盾

    【讨论】:

      【解决方案4】:

      按照@Farside 所说,我不相信可以通过书籍做到这一点。但是,您可以通过使用 Selenium 并在 Python 中抓取所有 cmets 来做到这一点。您可以使用the InstaPy libary。他们有快速入门模板,让这一切变得非常简单。

      【讨论】:

        猜你喜欢
        • 2014-05-14
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多