max_id 和 since_id 字段用于告诉 twitter 你请求的数据集在哪里开始或结束,并且对顺序没有影响该数据集是交付的,对于 Twitter 的时间线 api 来说是最新到最旧的。
因此回答
我们如何让 user_timeline 按升序返回推文?
是你不能。您可以做的最好的事情是从最新到最旧的数据中获取数据,并在获得数据后以另一种方式对其进行排序。
呃,user_timeline 似乎不支持光标,更新并道歉:
要进行提取,您将使用基于 max_id 的算法,类似于您的 since_id one
set count = 200
set max_id = max_int64
set since_id = max_previously_processed_id or 0
loop until max_id <= since_id
query user_timeline
receive tweets
process/cache tweets # whatever is possible.
set max_id = lowest tweet id
process/store all tweets # e.g., sort oldest to newest.
注意事项:
-
初始回填请求不需要
since_id,
但无害(since_id = 0 表示最高 3200 的所有内容
限制)并且意味着该算法也可以用于追赶。
-
max_id 也可以初始化为已知的推文 ID,以检索
仅限较早的推文。
- 不考虑错误/异常/边缘情况,因为我们正在谈论高-
级算法。
不管怎样,已经有几天了,但希望对您或其他人仍然有用。
要进行提取,您可以使用基于 max_id 的算法,类似于您的 since_id,但更好的是使用 cursoring。基本算法是
set since_id = max_previously_processed_id or 0
set cursor = -1, count = 200
loop until cursor = 0 # next_cursor = 0 sent when no more data.
query user_timeline # cursor and *since_id* amongst the parameters.
receive tweets
{process tweets} # may or may not be possible without them all.
set cursor = response next_cursor
{process all tweets} # e.g., sort oldest to newest.
注意事项:
1. 初始回填请求不需要since_id,
但无害(since_id = 0 表示最高 3200 的所有内容
限制)并且意味着该算法也可以用于追赶。
2. 比较。 1、max_id(不包括在内)可以相当类似地用于
如果会话由于某种原因重置并且您松动,则重新启动
跟踪可用的 next_cursor 值。
3. 不考虑错误/异常/边缘情况,因为我们说的是高-
级算法。
不管怎样,已经有几天了,但希望对您或其他人仍然有用。