[PHP] Twitter Search API の使い方

<?php
$search_word = 'http://example.com/&#39;;
$page_per_posts = 100;
$twitter_search_api = sprintf(
'http://search.twitter.com/search.json?q=%s&rpp=%d&#39;,
urlencode($search_word),
$page_per_posts
);
$results = array();
if ( $response = file_get_contents($twitter_search_api) ) {
$json = json_decode($response);
$list = (array)(isset($json->results) ? $json->results : array());
foreach ( $list as $item ){
$results[$item->id_str] = array(
'author' => $item->from_user_name ,
'author_id' => $item->from_user_id_str ,
'profile_url' => $item->profile_image_url ,
'tweet_url' => sprintf('https://twitter.com/%s/status/%s&#39;, $item->from_user, $item->id_str) ,
'datetime' => (int) strtotime($item->created_at) ,
'content' => $item->text ,
'geo' => $item->geo ,
'language' => $item->iso_language_code ,
);
}
}

$search_word は検索したい文字列、$page_per_posts は一度に取得するツイート数、$results に検索結果が入るよ。

via. GET search | Twitter Developers

Re: Twitterのツイートを表示する-RSS編

公式ウィジェットで十分綺麗なので良いんですが
なんとなく自分で実装したいと思って調べてみたところ

あくちーさん( @actywav )のサイトを見つけました!!
WordPress のプラグイン無しですごく簡単にツイート表示しよー : actyway

ふむふむ。やることは大まかにこの3つの様です。

  • functions.phpに処理実装
  • CSS調整
  • jquery.totemtickerの設置

:
なるほど!キャッシュですか!先生!
ということでTransients APIについては
全く知らなかったので、これを使う方向でカスタマイズしようと思ったのですが・・・

どうやら今回使用しているsimplexml_load_file関数と、Transients APIは
相性が悪いらしく、一旦実装を断念しました・・・。
※調べた所、simplexml_load_file関数はシリアライズ処理が上手くいかないのだそうです。
via. Twitterのツイートを表示する-RSS編 | Web-Clutch

ってわけで、Transients API に対応させてみた。未検証。

<?php
function get_tweet_lines($userName){
date_default_timezone_set('Asia/Tokyo');
$rssUrl = 'http://twitter.com/statuses/user_timeline/&#39;.$userName.'.rss';
// get cache
if ( ($response = get_transient(md5($rssUrl))) === false ) {
$response = wp_remote_get($rssUrl);
if( !is_wp_error( $response ) && $response["response"]["code"] === 200 ) {
set_transient(md5($rssUrl), $response, 60 * 60 ); // 60sec * 60min = 1hour
} else {
$response = false;
}
}
if( $response && !is_wp_error($response) ) {
$rssData = simplexml_load_string($response["body"]);
echo '<ul id="vertical-ticker" class="tweet-widget">';
foreach($rssData->channel->item as $item){
$pubDateJP = date("Y/m/d H:i:s",strtotime($item->pubDate));
echo "<li>".str_replace("\n",'',$item->description)."<p><a href='".$item->link."'>".$pubDateJP."</a>&nbsp;のつぶやき。</p></li>\n";
}
echo '</ul>';
} else {
// Handle error here.
}
}

view raw
get_tweet_lines.php
hosted with ❤ by GitHub

Re: WordPressで記事のツイート数だけを取得して表示する方法

先日設置しましたメニューバー下の新着記事サムネイルに、その記事のツイート数を表示してみました!
いろんなサイトを見て「いいなぁ」と思っていたのでけっこー感動。いいわぁw

ということで、記事のツイート数を取得して表示する方法と、この斜め三角をどうやって作ったかを解説したいと思います!

via. WordPressで記事のツイート数だけを取得して表示する方法 | NANOKAMO BLOG

これだと、記事にアクセスがあったときに毎回 Twitter API 叩いて、Twitter サーバーにいらん負荷をかけちゃうので、WordPress の Transient API 使って、キャッシュを取得するようにしたほうが良いと思う。
あと WP 使うんなら file_get_contents() ではなく、wp_remote_get() 使ったほうが、何かと便利。

<?php
/*
* Get Social Button Count twitter
*/
function get_social_counts( $url ){
$transient_key = md5('get_social_counts-' . $url);
// get cache
if ( false === ($counts = get_transient($transient_key)) ) {
$counts = array();
//twitter tweetcount
$response = wp_remote_get('http://urls.api.twitter.com/1/urls/count.json?url=&#39; . urlencode($url));
if( !is_wp_error( $response ) && $response['response']['code'] === 200 ) {
$decode_tweetcount = json_decode($response['body']);
$twitter_tweetcount =
isset($decode_tweetcount['count'])
? $decode_tweetcount['count']
: 0;
} else {
$twitter_tweetcount = 0;
}
//set array
$counts['twitter'] = $twitter_tweetcount;
// set cache
set_transient($transient_key, $counts, 60*60*1); // expires 60sec * 60min * 1 = 1hour
}
return $counts;
}

※未検証です。