我正在创建一个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之间的推文。
示例:
导致我错过了70002-70030
现在来寻求: 有没有办法知道自上次通话以来有多少推文?如果是这样,有没有办法确保在我调用API时我正在接收下一条推文,而不是最近发布的推文?
语言:PHP5 使用:Twitter REST API
答案 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)