2011-08-05 28 views
0

retweeters的名单有没有办法使用流API怎样用流API

REST API已经得到retweeters ID列表 “GET状态/:ID/retweeted_by/IDS” 为获得retweeters名单

流式API有一个“状态/转推”,但不是一般可用的资源。

所以这个想法是使用“状态/过滤器”和过滤器基于鸣叫ID。

谢谢

回答

1

在通过流API返回的结果,retweeters(如果有的话)在这里列出:

$retweeters = $tweet->{'retweeted_status'}->{'activities'}->{'retweeters'}; 

这里有一个网页,其中显示retweeters的ID与过滤流搜索“爱”一词 - 确保使用您的Twitter用户名和密码。请注意,API仅返回前100个转发者。

<html><body> 
<?php 
    echo(str_pad("START<br>",2048)); 
    @ob_flush(); 
    flush(); 

    $opts = array(
     'http'=>array(
      'method' => "POST", 
      'content' => 'track=love', 
      'header' => "Content-Type: application/x-www-form-urlencoded\r\n" 
     ) 
    ); 

    $context = stream_context_create($opts); 
    $username = 'your_twitter_username'; 
    $password = 'your_twitter_password'; 
    while (1){ 
     $instream = fopen('http://'.$username.':'.$password.'@stream.twitter.com/1/statuses/filter.json','r' ,false, $context); 
     while(! feof($instream)) { 
      if(! ($line = stream_get_line($instream, 20000, "\n"))) { 
       continue; 
      }else{ 
       $tweet = json_decode($line); 
       $retweeters = array(); 
       $retweeters = $tweet->{'retweeted_status'}->{'activities'}->{'retweeters'}; 

       //We store the new post in the database, to be able to read it later 
       if (sizeof($retweeters) > 0) { 
        echo("<br><br>"); 
        print_r($retweeters); 
       } 
       @ob_flush(); 
       flush(); 
      } 
     } 
    } 
?> 
</html></body>