使用twitter流API

时间:2011-05-31 14:24:22

标签: php api twitter stream

我需要使用实时推文样本。我有这段代码,但我无法得到任何东西,我称之为正确的链接。我肯定会输入正确的用户名和密码,但它仍然没有通过。请建议是因为twitter最近更改了API。对不起,如果问题是基本的,我是新手。提前致谢

<?php
//datacollector.php
$fp =
fopen("http://username:pass@stream.twitter.com/spritzer.json
while($data = fgets($fp))
{
    $time = date("YmdH");
    if ($newTime!=$time)
    {
        @fclose($fp2);
        $fp2 = fopen("{$time}.txt","a");
    }
    fputs($fp2,$data);
    $newTime = $time;
}
?>

4 个答案:

答案 0 :(得分:3)

DWRoelands关于弃用的帖子是正确的,但这实际上不是你的问题 - 问题在于Twitter deprecated spritzer.json。您应该使用/1/statuses/sample.json来获取firehose。这是一个有效的命令行示例:

curl http://stream.twitter.com/1/statuses/sample.json -uusername:password

如果您希望在生产中使用此代码很长一段时间,我当然会考虑实施OAuth,但由于Twitter甚至没有宣布关闭Basic Auth的时间表,所以如果您只是无所事事。当然,他们可以在没有任何警告的情况下明天关闭它。

这是一些有效的PHP代码,只需用实际凭据替换username:password:

<?php
//datacollector.php
$fp = fopen("http://username:password@stream.twitter.com/1/statuses/sample.json", "r");
while($data = fgets($fp)) {
    $time = date("YmdH");
    if ($newTime!=$time) {
        @fclose($fp2);
        $fp2 = fopen("{$time}.txt","a");
    }
    fputs($fp2,$data);
    $newTime = $time;
}
?>

答案 1 :(得分:1)

如果您需要应用程序,可以使用Twitter C# API : Tweetinvi

轻松使用C#进行开发

API提供了一个类Stream,允许您使用委托函数检索流的信息。

以下是样本提供的示例:

private static void streaming_example(Token token)
    {
        // Creating a Delegate to use processTweet function to analyze each Tweet coming from the stream
        Stream.ProcessTweetDelegate produceTweetDelegate = new Stream.ProcessTweetDelegate(processTweet);
        // Creating the stream and specifying the delegate
        Stream myStream = new Stream(produceTweetDelegate);
        // Starting the stream by specifying credentials thanks to the Token
        myStream.StartStream(token);
    }

实施简单快捷。

我是该项目的开发人员之一。

答案 2 :(得分:0)

流式传输API文档表明您需要使用OAuth进行验证才能访问用户流。请参阅:Twitter: Streaming API Concepts

该页面还表明不推荐使用基本身份验证,因此我认为您需要调整代码才能使用OAuth。

答案 3 :(得分:0)

here下载lib文件夹。使用以下代码将它们放在同一文件夹中。修改Api键并更改要跟踪的关键字。如果你要在浏览器中执行它稍等一下。

 <?php
   /***************libraries*********************/
    require_once('../lib/Phirehose.php');
    require_once('../lib/OauthPhirehose.php');
   /*********Escape from Execution Time***********/
   set_time_limit(0);
    class FilterTrackConsumer extends OauthPhirehose
    {
      public function enqueueStatus($status)
      {
        $data = json_decode($status, true);

        if (is_array($data) && isset($data['user']['screen_name'])) {
          print $data['text'];
        }
      }
    }
 /*************************API KEYS*******************************/
    define('TWITTER_CONSUMER_KEY', 'api_key');
    define('TWITTER_CONSUMER_SECRET','api_secret');


    define('OAUTH_TOKEN','token');
    define('OAUTH_SECRET','token secret');?>

    // Start streaming
    $sc = new FilterTrackConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_FILTER);
    $sc->setTrack(array('#keyword'));
    $sc->consume();
  ?>