Twitter API - 如何按升序正确排序推文

时间:2017-11-03 00:16:19

标签: api twitter

我正在使用user_timeline API来访问用户的推文。我想在我的初始请求中检索最早的推文,这样我就可以在API的3200推文限制内开始回填他们的推文了。我正在使用的算法如下

  • 设置since_id = 1,count = 200
  • 循环
    • 查询user_timeline
    • 接收推文
    • 处理推文
    • 设置since_id =最高推文ID

假设用户有1000条推文。按照我们得到的算法:

  • since_id = 1,count = 200
  • 循环
    • 查询user_timeline
    • 将收到推文1000至801,按顺序排序< - 问题在这里
    • 处理推文
    • 设置since_id = 1000(最高推文ID)

但是,下次执行循环时,since_id现在为1000,不会返回任何推文,这意味着推文1到800将永远无法访问。

我们怎样才能让user_timeline按升序返回推文?还是有更好的算法?

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

max_idsince_id字段用于告知Twitter您要求的数据集开始结束,并且没有任何影响关于数据集的交付顺序,对于twitters时间轴apis最新到最旧。

这样的答案

  

我们怎样才能让user_timeline按升序返回推文?

是你无法做到的。您可以做的最好的事情是获取最新到最旧的数据,并在获得数据后以其他方式对其进行排序。

呃,user_timeline似乎不支持游标,道歉更新:

要进行提取,您可以使用基于max_id的算法{/ 1}}

since_id

注意:

    初始回填请求不需要
  1. 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意味着一切都达到了3200 限制)并且意味着该算法也可以用于追赶。
  2. since_id = 0也可以初始化为已知的推文ID,以便检索 仅限早期推文。
  3. 错误/异常/边缘情况未考虑,因为我们正在谈论高 - 等级算法。
  4. 无论如何,它已经过了几天,但希望仍然对你或其他人有用。

    要进行提取,您可以使用max_id基于max_id的算法,但更好的方法是使用cursoring。其基本算法是

    since_id

    注意: 1.初始回填请求不需要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. ,    但是无害(since_id意味着一切都达到了3200    限制)并且意味着该算法也可以用于追赶。 参考1,since_id = 0(不包括在内)可以非常类似地使用    如果会话由于某种原因重置而您松开,则重新启动    跟踪可用的next_cursor值。 3.考虑到我们高谈的错误/异常/边缘情况    等级算法。

    无论如何,它已经过了几天,但希望仍然对你或其他人有用。