【问题标题】:How to detect if Twitter API home timeline limit has been reached?如何检测是否已达到 Twitter API 主页时间线限制?
【发布时间】:2017-07-11 01:09:18
【问题描述】:

Twitter 将主页时间线上可获取的推文数量限制为 800。在浏览响应直到没有更多页面可以收集所有可用推文后,我想检测我是否已达到此限制。

我想不出这样做的可靠启发式方法。可悲的是,它不像检查检索到的推文的长度是否等于限制那么简单,因为如果我理解正确的话,暂停或删除的内容会在限制生效后被删除。例如,我们可能有 600 条推文而不是 800 条,因为有 200 条被暂停/删除,但我们也可能拥有相同的数量,因为我们没有达到限制。

【问题讨论】:

    标签: rest api twitter pagination


    【解决方案1】:

    对于第一页之后的所有请求,将max_id 参数设置为上一页中收到的最旧推文的 id(或小于此值)。当当前响应中最旧的推文的 id 与您发送的 max_id 相同时停止(或者如果响应为空)。

    见:https://dev.twitter.com/rest/public/timelines

    【讨论】:

    • 嗨@pii_ke,我确实这样做了,但是“最后一个响应是否包含一条推文”并不是我们是否达到限制的启发式方法,因为这 匹配时间线实际包含的推文少于限制的情况,在这种情况下,最后一个响应仍将包含一条推文。
    • 嗯,你是对的。此方法告诉何时停止询问较旧的推文。它不知道时间线是否没有更多推文或是否达到限制。您有兴趣发现这种差异吗?
    • 没错,我试图区分这两种情况:时间线用尽或达到限制。
    • 好吧。有些事情我可能已经尝试过了。一种是将最旧推文的timestamp 与推特用户的created_at 时间戳进行比较。另一个是在本地 twitter 用户数据库中维护一个oldest_known_tweet_timestamp 字段,每当我发现一些比这更旧的推文时更新它。还尝试使用 REST API 的/search/tweetsendpoint 或通过在网站上抓取 Twitter 的高级搜索界面以某种方式检索任何较旧的推文。最后,我会检查 Twitter 响应返回的 HTTP 标头。他们可能有对此有用的调试信息。
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2018-06-03
    相关资源
    最近更新 更多