ここからphirehoseを落としてくる
サンプルプログラムをコピーし、以下のphpプログラムを作成する
<?php
require_once('lib/UserstreamPhirehose.php');
// 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", "ここにOAUTHトークンを記入");
define("OAUTH_SECRET", "ここにOAUTHシークレットキーを記入");
mb_language("ja");
mb_internal_encoding('UTF-8');
/**
* 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'])) {
if ($data['lang']==="ja") {
if (!array_key_exists('retweeted_status', $data)) {
$tweet=str_replace("\n","",urldecode($data['text']));
print $data['created_at'] . "'\t@"
. mb_convert_encoding($data['user']['screen_name'],"sjis-win","UTF-8") . " ("
. mb_convert_encoding($data['user']['name'],"sjis-win","UTF-8") . ")\t"
. mb_convert_encoding($tweet,"sjis-win","UTF-8") . "\n";
var_dump($data["user"]);
}
}
}
}
}
class SampleConsumer extends OauthPhirehose
{
public function enqueueStatus($status)
{
$data = json_decode($status, true);
//if (is_array($data) && isset($data['user']['screen_name'])) {
// print $data['user']['screen_name'] . ': ' . urldecode($data['text']) . "\n";
// }
if (is_array($data) && isset($data['user']['screen_name'])) {
if ($data['lang']==="ja") {
if (!array_key_exists('retweeted_status', $data)) {
$tweet=str_replace("\n","",urldecode($data['text']));
print $data['created_at'] . "'\t@"
. mb_convert_encoding($data['user']['screen_name'],"sjis-win","UTF-8") . " ("
. mb_convert_encoding($data['user']['name'],"sjis-win","UTF-8") . ")\t"
. mb_convert_encoding($tweet,"sjis-win","UTF-8") . "\n";
}
}
}
}
}
//キーワードで絞り込んで表示
$sc = new FilterTrackConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_FILTER);
$sc->setTrack(array('#艦これ','E-1','E-2','E-3','E-4','E-5','E-6','E-7')); //検索する文字列をセット
//全体からTL表示
//$sc = new SampleConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_SAMPLE);
$sc->setLang('ja'); // 日本語のTweetのみ
$sc->consume(); // Start streaming
とりあえず指定キーワードを含んだTwitterのタイムラインを眺めたいという目的は達成。
キーワードで絞り込まず、全体のTLの一部を取得したい場合は$sc = new の部分のコメントアウトを逆に。
$data[‘user’]にはツイート情報が入っている。
項目は以下の通り、
var_dump($data['user']);
array(38) {
'id' => int(123456789)
'id_str' => string(9) "123456789"
'name' => string(31) "ユーザー名"
'screen_name' => string(9) "username"
'location' => NULL
'url' => string(123) "http://lil.la/"
'description' => string(123) "任意のユーザー説明"
'protected' => bool(false)
'verified' => bool(false)
'followers_count' => int(12345)
'friends_count' => int(12345)
'listed_count' => int(175)
'favourites_count' => int(18)
'statuses_count' => int(1234567)
'created_at' => string(30) "Tue Mar 15 10:42:20 +0000 2011"
'utc_offset' => int(32400)
'time_zone' => string(5) "Tokyo"
'geo_enabled' => bool(false)
'lang' => string(2) "ja"
'contributors_enabled' => bool(false)
'is_translator' => bool(false)
'profile_background_color' => string(6) "ABB8C2"
'profile_background_image_url' => string(48) "http://abs.twimg.com/images/themes/theme1/bg.png"
'profile_background_image_url_https' => string(49) "https://abs.twimg.com/images/themes/theme1/bg.png"
'profile_background_tile' => bool(false)
'profile_link_color' => string(6) "CB7218"
'profile_sidebar_border_color' => string(6) "EEEEEE"
'profile_sidebar_fill_color' => string(6) "EFEFEF"
'profile_text_color' => string(6) "333333"
'profile_use_background_image' => bool(false)
'profile_image_url' => string(74) "http://pbs.twimg.com/profile_images/1713831010/asuha2_400x400.jpg"
'profile_image_url_https' => string(75) "https://pbs.twimg.com/profile_images/1713831010/asuha2_400x400.jpg"
'profile_banner_url' => string(58) "https://pbs.twimg.com/profile_images/1713831010/asuha2_400x400.jpg"
'default_profile' => bool(false)
'default_profile_image' => bool(false)
'following' => NULL
'follow_request_sent' => NULL
'notifications' => NULL
}
print $data[‘created_at’] ・・・の所を書き換えればDBに突っ込むとかいろいろできそう。


コメント