如何确保我的网络应用程序在指定的推文后获得下一条推文

时间:2010-01-11 06:22:37

标签: php twitter

我正在创建一个webapp,它依赖于php中的twitter状态时间线

我正在使用以下API调用向Twitter发出请求:

$ since_id等于基于最后解析的推文的存储ID。

$ req_url ='http://twitter.com/statuses/friends_timeline.xml?count=20&page=1&since_id='。$ since_id;

我注意到,如果自上次通话以来有超过20条推文通过,我将收到自上次通话以来最近的20条推文,并且反过来又错过了$ since_id和当前20之间的推文。

示例:

  1. 在0800解析的最后一条推文是70001
  2. 自上次API调用以来的10分钟窗口中发布了50条推文
  3. 在0810我调用API以获取自70001以来的推文
  4. 它返回推文70031 - 70051
  5. 导致我错过了70002-70030

    现在来寻求: 有没有办法知道自上次通话以来有多少推文?如果是这样,有没有办法确保在我调用API时我正在接收下一条推文,而不是最近发布的推文?

    语言:PHP5 使用:Twitter REST API

2 个答案:

答案 0 :(得分:2)

你可以将since_id参数设置为上次看到的推文,并指定一个200的计数。然后通过指定max_id来检索旧的。

$startId = [last tweet_id]
$tweets = "twitter.com/statuses/friends_timeline.xml?since_id=${istartId}" .
  "&count=200"

while (count($tweets)) {
   insert $tweets into table on duplicate key update none
   $maxId = $tweets[count($tweets) - 1]['id'];
   if ($maxId <= $startId) {
     break;
   }
   $tweets = "twitter.com/statuses/friends_timeline.xml?max_id=${maxId}" .
     "&count=200"
}

似乎没有办法在特定ID处开始分页。在api中,你总是从最近的条目开始,然后回到最后看到的id。

可以使用搜索原子和运算符在日期范围内搜索,直到和来自:

http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search

但实际上,它仍按时间desc排序,因此无论如何都需要向后滚动。

答案 1 :(得分:0)