Twitterクライアントを作成していてとても参考になったのでペタリ。
http://nonbiri-tereka.hatenablog.com/entry/2014/03/06/220015
pageのパラメーターはほぼいらないことに気づいた。
Twitterクライアントを作成していてとても参考になったのでペタリ。
http://nonbiri-tereka.hatenablog.com/entry/2014/03/06/220015
pageのパラメーターはほぼいらないことに気づいた。
TwitterのStreamingAPIはRestApiと違い実行回数の制限が無いため、(同時コネクション数の制限はある。)リアルタイムで無限にツイートを取得し放題なのである。
ゼロからやろうとすると大変なので偉大なるライブラリ様を使わせていただくことにする。
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が利用できるようになるのでめちゃくちゃオススメ。
下記サイトを参考にさせていただきました。
CakePHP3にぶち込んだ時の話。
https://github.com/abraham/twitteroauth/
上記URLのライブラリはPHPerには有名だけれどもnamespaceが記述されていないので、Symfony2
を始めとするモダンなフレームワークにぶちこもうとするとなかなかに使い辛い。
ということでファイル内容を若干カスタマイズする。
まずはgithubよりzipをダウンロード。
利用するのはtwitteroauthフォルダ以下のファイルたち。
twitteroauth.php
をいじりましょう。
1 |
require_once('OAuth.php'); |
ファイル先頭に下記を追記。
※namespaceの部分はプロジェクトによって適切に設定されたし。今回はCakePHP3のsrc/Lib/twitteroauth
以下にライブラリを配置したので下記のように記述。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
namespace App\Lib\twitteroauth; use \OAuthConsumer; use \OAuthDataStore; use \OAuthException; use \OAuthRequest; use \OAuthServer; use \OAuthSignatureMethod; use \OAuthSignatureMethod_HMAC_SHA1; use \OAuthSignatureMethod_PLAINTEXT; use \OAuthSignatureMethod_RSA_SHA1; use \OAuthToken; use \OAuthUtil; |
twitteroauth.phpはともかくOAuth.phpはpsrに準拠してないといったレベルを超越しているライブラリなので下記の通りfilesに直接パスを指定してやる。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
... "autoload": { "psr-4": { "App\\": "src" }, "files": [ "src/Lib/twitteroauth/twitteroauth.php", "src/Lib/twitteroauth/OAuth.php" ] }, ... |
最後にphp composer.phar update
をしてやればOK。php composer.phar dumpautoload
でもOK。てか後者のほうが速い。
際の分かり易いコードサンプルをみつけたのでペタリ。
http://temog.info/archives/programming/twitter-oauth-php-login.html
すごくわかりやすかったです。ありがとうございます。