Twitter Streaming APIをPHPから使うMEMO

ここからphirehoseを落としてくる

サンプルプログラムをコピーし、以下のphpプログラムを作成する
[code]
<?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

[/code]

とりあえず指定キーワードを含んだTwitterのタイムラインを眺めたいという目的は達成。
キーワードで絞り込まず、全体のTLの一部を取得したい場合は$sc = new の部分のコメントアウトを逆に。

$data[‘user’]にはツイート情報が入っている。
項目は以下の通り、

[code]
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
}
[/code]

print $data[‘created_at’] ・・・の所を書き換えればDBに突っ込むとかいろいろできそう。

コメント

タイトルとURLをコピーしました