TwitterのStreamingAPIはRestApiと違い実行回数の制限が無いため、(同時コネクション数の制限はある。)リアルタイムで無限にツイートを取得し放題なのである。
Phirehoseを用いてStreamingAPIを利用する
ゼロからやろうとすると大変なので偉大なるライブラリ様を使わせていただくことにする。
- まずは下記URLからライブラリ本体をダウンロード。
https://github.com/fennb/phirehose
ダウンロードできたらzipを解凍。example
フォルダの中に、filter-oauth.php
があるのでこいつをカスタマイズする。
※バックアップのためにコピーを保存しとこう。
開くと下記のようになっているのでdefine
で定義されている4つの定数を自分のものに設定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php require_once('../lib/Phirehose.php'); require_once('../lib/OauthPhirehose.php'); /** * Example of using Phirehose to display a live filtered stream using track words */ class FilterTrackConsumer extends OauthPhirehose { /** * Enqueue each status * * @param string $status */ public function enqueueStatus($status) { /* * In this simple example, we will just display to STDOUT rather than enqueue. * NOTE: You should NOT be processing tweets at this point in a real application, instead they should be being * enqueued and processed asyncronously from the collection process. */ $data = json_decode($status, true); if (is_array($data) && isset($data['user']['screen_name'])) { print $data['user']['screen_name'] . ': ' . urldecode($data['text']) . "\n"; } } } // The OAuth credentials you received when registering your app at Twitter define("TWITTER_CONSUMER_KEY", "/* ここと */"); define("TWITTER_CONSUMER_SECRET", "/* ここと */"); // The OAuth data for the twitter account define("OAUTH_TOKEN", "/* ここと */"); define("OAUTH_SECRET", "/* ここを自分のものに設定する */"); // Start streaming $sc = new FilterTrackConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_FILTER); $sc->setTrack(array('morning', 'goodnight', 'hello', 'the')); // あとこれを設定しとくと、日本語ツイートのみを取得することができるようになる。 $sc->setLang('ja'); $sc->consume(); |
んであとはこのファイルにHTTPサーバーを経由してアクセスするとツイーが永遠と流れてくる。
とても簡単にStreamingAPIが利用できるようになるのでめちゃくちゃオススメ。
下記サイトを参考にさせていただきました。