twitter max_id和since_id

时间:2014-12-06 08:15:06

标签: php api twitter

我使用twitter user_timeline api来获取用户的所有推文。

它在单个请求中返回200但问题是如果推文像400或500那么我想得到所有推文

下面是我的代码,在输出中提供200条推文:

require_once('TwitterAPIExchange.php');

$settings = array(
    'oauth_access_token' => "",
    'oauth_access_token_secret' => "",
    'consumer_key' => "",
    'consumer_secret' => ""
);
$requestMethod = 'GET';
$url1="https://api.twitter.com/1.1/statuses/user_timeline.json";

$sc_name = 'DailyRapPics';
$count ='700';

$getfield = '?screen_name='.$sc_name.'&exclude_replies=true&include_rts=true&contributor_details=false';

$twitter = new TwitterAPIExchange($settings);
$tweets  = $twitter->setGetfield($getfield)->buildOauth($url1, $requestMethod)->performRequest();

$tweetarray = json_decode($tweets);
$l = 0;
foreach($tweetarray as $mytweets){
$l++;
}
echo 'total values->>>>>>>>>'.$l;

当我看到twitter时,有像since_id,max_id

这样的字段

如何使用它来获取低于3200的Twitter限制的用户的所有推文请帮助我

可能值od max_id和since_id在这里请指导

1 个答案:

答案 0 :(得分:4)

您的问题是关于如何分页(因为请求参数“count”根据Twitter's user_timeline API每个查询最多有200个结果),但它允许您获取最近的3200条推文。

分页的正确方法是在这样的算法中使用推文的ID:

  1. 初始化变量

    $all_tweets = array();
    $max_tweets_per_response = 200;
    $last_tweet_id = 0;
    $max_tweets_you_want_to_obtain = 666;
    
  2. $ tweets =查询结果与您执行此操作的方式相同,但也添加了参数: count = $ max_tweets_per_response &amp; since_id = <强> $ last_tweet_id
  3. 解码从Twitter收到的响应,并将其与包含所有3200个结果的变量合并。

    $tweetarray = json_decode($tweets);
    $all_tweets = array_merge($all_tweets, $tweetarray);
    
  4. $ last_tweet_id =您收到的最后一条推文的ID,现在将是变量 $ tweet

  5. 步骤2 开始迭代直到

    count($tweetarray) < $max_tweets_per_response
    or
    count($all_tweets) >= $max_tweets_you_want_to_obtain
    
  6. 根据您的所有推文执行任何操作,现在将包含在变量 $ all_tweets

    echo 'total values->>>>>>>>>'.count($all_tweets);