Twitter API 中的“since_id”和“max_id”到底是啥意思
Posted
技术标签:
【中文标题】Twitter API 中的“since_id”和“max_id”到底是啥意思【英文标题】:What exactly does 'since_id' and 'max_id' mean in the Twitter APITwitter API 中的“since_id”和“max_id”到底是什么意思 【发布时间】:2011-09-18 17:22:47 【问题描述】:我已经研究 Twitter 文档有一段时间了,但我已经碰壁了如何获取一段时间内关注者增长的统计数据/一段时间内的推文计数......
我想从社区了解 since_id
和 max_id
和 count
在 Twitter API 中的含义。
我一直在关注这个页面https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline
我正在尝试获取用户的统计信息 --
特定时间段内的推文计数 特定时间段内的关注者数量 转发次数我需要一些帮助来形成上述查询字符串..
谢谢..
【问题讨论】:
【参考方案1】:since_id 和 max_id 都是非常简单的参数,您可以使用它们来限制您从 API 中返回的内容。来自the docs:
since_id
- 返回带有 ID 大于(即更近 比)指定的 ID。有 限制推文的数量 可以通过API访问。如果 推文的限制已经发生 since_id,since_id 将是 强制使用最旧的可用 ID。max_id
- 返回带有 ID 的结果 小于(即早于)或 等于指定的 ID。
因此,如果您有给定的推文 ID,则可以使用这两个参数搜索较旧或较新的推文。
count
更简单——它指定了您想要返回的最大推文数,最多 200 条。
不幸的是,API 不会准确地返回您想要的内容 - 您在查询 user_timeline
时无法指定日期/时间 - 尽管您可以在使用搜索 API 时指定日期/时间。无论如何,如果您需要使用 user_timeline,那么您将需要轮询 API,收集推文,确定它们是否符合您想要的参数,然后相应地计算您的统计数据。
【讨论】:
感谢您的回答。如果我想为user_timeline
查询将日期转换为对应的since_id
,您是否建议首先使用search
API 函数来确定用于给定日期的正确ID?
这当然是一种方法,我想不出另一种方法。
@muffinista :如何知道我们是否达到了 max_id 的最旧可能/允许值?我的意思是假设我设置 count = 100,然后我每次都获取推文并将 max_id 设置为上次收到的推文的最后一个 id。在这种情况下,我将如何知道我何时达到了限制?
@user1599964 如果你这样做,在某些时候你会得到少于 100 个结果,而那时你大概已经到达了推文的结尾。
@muffinista:我试图在同一个调用中同时使用 max_id 和 since_id 来搜索查询。我在同一个调用中将 max_id 设置为最旧的推文 ID(收到的最后一个 ID)和自 id 到最新的推文 ID(收到的第一个 ID),但我总是收到此错误 '[u'message': u'Missing or无效的 url 参数。', u'code': 195'。有什么想法吗?【参考方案2】:
max_id = tweets id list 的顶部。 since_id = tweets id 列表的底部。
更多信息:深入了解最后一张图表..here
【讨论】:
何时必须更新 since_id 值才能获得最新数据? @pe60t0 我认为这里有两种情况。第一种情况是您上次执行的请求没有返回任何数据。这意味着您到达了搜索查询时间线的开头(“底部”)。第二种情况将根据您的服务/应用程序逻辑而大不相同:a)您可以限制整体搜索的深度(例如按日期);或者 b) 如果您需要对新推文的出现快速做出反应,您可以根据某种计时器从头开始搜索(例如,每 5 分钟将查询的 since_id 重置为一个新值)。【参考方案3】:max_id 和 since_id 用于防止 Twitter API 调用出现冗余。将传入的推文可视化为堆积在堆栈上。一个 API 调用必须指定将处理多少(计数)推文。但是,在进行此调用时,可能会添加新的推文。在这种情况下,如果您抽出一个堆栈并运行该过程,您会注意到可能会有一些“碎片”或未处理的推文部分卡在已处理的推文之间。这在下图中也可见。
为了解决这个问题,使用两个参数来跟踪先前处理的最新/最大 ID 推文 (since_id) 和最近处理的最旧/最低 ID 推文 (max_id)。 since_id 指向“fragment”的底部,(max_id-1) 指向“fragment”的顶部。 (请注意,max_id 与 since_id 不同,包含在内) 因此,这些参数一起跟踪推文堆栈的哪一部分仍需要处理。
【讨论】:
以上是关于Twitter API 中的“since_id”和“max_id”到底是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
python 使用Tweepy访问Python中的Twitter API