1. TOP
  2. Webサービス
  3. Twitter
  4. Twitter 検索APIを使って「高速道路渋滞なう」を作ってみる(GET search/tweets)

Twitter 検索APIを使って「高速道路渋滞なう」を作ってみる(GET search/tweets)

|

Twitter_logo_blue

個人的に「電車遅延なう」というサービスを、大変、気に入っています。同じ感じで、「高速道路渋滞なう」というサービスを自分で作ってみたいと思います。

Webサービスの「模写」といったところでしょうか。

お手本は「電車遅延なう」

ここ数日、「電車遅延なう」をじっくりと観察していると、仕様として次の6つが考えられます(見た目の限りでは)。

  • 最新の遅延を自動的に表示する
  • 「検索キーワード」から「特定のキーワード」を結びつける
  • 「特定のキーワード」に関するつぶやきを表示する
  • つぶやきには「ツィートに返信(Reply)」、「リツィート(RT)」、「お気に入りに登録(Fav)」が表示される
  • 検索キーワードから最近の遅延路線を表示させる
  • 検索キーワードから遅延指数を計算する

ユーザーが利用するときは、上から下の順番通りとなると考えます。しかし、機能を積み上げて完成させるためには、「3 → 4 → 1 → 2 → 5 → 6」という流れになると思います。

特定のキーワードを検索してつぶやきを表示する

「高速道路なう」のもっとも基本的な機能である、「特定のキーワード」を検索して、そのつぶやきを表示する機能のコードです。

<?php

require_once("twitteroauth/twitteroauth.php");

$consumerKey = "○○○○○○○○○○○○○○○○○○○○";
$consumerSecret = "○○○○○○○○○○○○○○○○○○○○";
$accessToken = "○○○○○○○○○○○○○○○○○○○○";
$accessTokenSecret = "○○○○○○○○○○○○○○○○○○○○";

$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);

$keywords = '名神高速';

$param = array(
    "q"=>$keywords,                  // keyword
    "lang"=>"ja",                   // language
    "count"=>20,                   // number of tweets
    "result_type"=>"recent"       // result type
);

$json = $twObj->OAuthRequest(
    "https://api.twitter.com/1.1/search/tweets.json",
    "GET",
    $param);

$result = json_decode($json, true);

?>
<?php

if($result['statuses']){
    foreach($result['statuses'] as $tweet){

?>
<ul>
  <li><?php echo date('Y-m-d H:i:s', strtotime($tweet['created_at'])); ?></li>
  <li><?php echo $tweet['user']['name']; ?></li>
  <li><img src="<?php echo $tweet['user']['profile_image_url']; ?>" /></li>
  <li><?php echo $tweet['text']; ?></li>
  <li><?php echo $tweet['id']; ?></li>
</ul>
  <?php } ?>
    <?php }else{ ?>
    <div class="twi_box">
        <p class="twi_tweet">関連したつぶやきがありません。</p>
    </div>
<?php } ?>

highway_meishin

いろいろとググってみた結果、Twitter Developersのドキュメンテーションと、こちらのサイトがもっとも参考になりました。

この記事を書いている時点で、「ツィートに返信(Reply)」、「リツィート(RT)」、「お気に入りに登録(Fav)」を表示させる方法を考えています。

〔つづきの記事〕

〔参考サイト〕