Использование API Twitter-потока - PullRequest
1 голос
/ 31 мая 2011

Мне нужно использовать образец твитов в реальном времени. У меня есть этот кусок кода, но я не мог получить ничего, что я звонил по правильной ссылке. определенно я поставил правильное имя пользователя и пароль, но все равно он не прошел. Пожалуйста, совет, потому что 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 ]

3 голосов
/ 01 июня 2011

То, что публикует DWRoelands, относится к устареванию, но на самом деле это не ваша проблема - проблема в том, что Twitter устарел spritzer.json .Вместо этого вы должны использовать /1/statuses/sample.json, чтобы получить пожарный шланг.Вот пример командной строки, который работает:

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

Если вы хотите использовать этот код в работе в течение длительного времени, я, безусловно, рассмотрю возможность реализации OAuth, но так как Twitter даже не объявилграфик выключения Basic Auth, нет никакой спешки, если вы просто дурачитесь.Конечно, они могут отключить его завтра без предупреждения.

Вот некоторый работающий код PHP, просто замените имя пользователя: пароль фактическими учетными данными:

<?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 голос
/ 08 августа 2012

Если вам нужно приложение, вы можете легко разработать его с помощью C #, используя Twitter C # API: Tweetinvi

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);
    }

Легко и быстро внедрить.

Я один из разработчиков, работающих над проектом.

0 голосов
/ 11 августа 2014

Загрузите папку 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();
  ?>
0 голосов
/ 01 июня 2011

Документация по потоковому API указывает, что вам нужно проверить с помощью OAuth, чтобы получить доступ к пользовательским потокам. См .: Twitter: концепции потокового API

На этой странице также указано, что базовая аутентификация устарела, поэтому я думаю, что вам придется адаптировать свой код для использования OAuth.

...