PHPでTwitterトレンドランキングを作成してみた。【TIPS】

TIPS

はじめに

Twitterでトレンドのキーワードを主要都市(東京、大阪、名古屋)別に表示させるためのWebサイトを作成してみました。

日本で今何がアツいのか一目瞭然です。
シンプルな作りなので学習用にはもってこいです。

TwitterTrendRanking

※TwitterAPIの制限が掛かってしまい、表示されないことがあります。

やっていることは、TwitterAPIを叩いて一覧表示するだけのものです。
認証のためにTwitteroauthを使用しています。

ソースコード

index.php

<!--?php require_once __DIR__ . '/functions.php'; ?-->
<h1>Twitter Trend Ranking</h1>
<div class="tbl"><!-- 東京(1118370)のトレンドを取得 -->
<!--?php echo makeTrendsHtml(getTrends(1118370)); ?-->
<!-- 大阪(15015370)のトレンドを取得 -->
<!--?php echo makeTrendsHtml(getTrends(15015370)); ?-->
<!-- 名古屋(1117817)のトレンドを取得 -->
<!--?php echo makeTrendsHtml(getTrends(1117817)); ?--></div>
 

地域コード

  • 東京(1118370)
  • 大阪(15015370)
  • 名古屋(1117817)

functions.php

<!--?php //TwitterOAuthを読み込む require_once 'twitteroauth/autoload.php'; require_once __DIR__ . '/config.php'; use Abraham\TwitterOAuth\TwitterOAuth; //TwitterAPIにて引数に渡した地域コードのトレンドをjson形式で受け取る。 function getTrends($locate){ $twObj = new TwitterOAuth(consumerKey,consumerSecret,accessToken,accessTokenSecret); $request = $twObj->OAuthRequest("https://api.twitter.com/1.1/trends/place.json","GET",array("id"=>$locate));<br ?--> $json = json_decode($request,true);
return $json;
}

//json形式で取得したトレンドデータを表示用のhtml形式に整形して返す。
function makeTrendsHtml($res){
$cnt = 0;
$html = "";

$html .= "

";$format = "";foreach ((array)$res[0]['trends'] as $key => $v) {
$cnt += 1;
$html .= sprintf($format,$cnt,$v['url'],$v['name']);
if ($cnt == 30){
break;
}
}$html .= "
<table>
<tbody>
<tr>
<th colspan="3">" .
$res[0]['locations'][0]['name'] .
"</th>
</tr>
<tr>
<td>%d</td>
<td><a href="%s"> %s </a></td>
</tr>
</tbody>
</table>
";

return $html;
}
?>

config.php

<!--?php //TwitterAPIで登録した情報をセットする。 define('consumerKey',"XXXXXXXXXXXXXX"); define('consumerSecret',"XXXXXXXXXXXXXX"); define('accessToken',"XXXXXXXXXXXXXX"); define('accessTokenSecret',"XXXXXXXXXXXXXX"); ?-->

styles.css

body{
font-family: Arial sans-serif;
text-align: center;
font-size: 18px;
}

.tbl{
text-align: center;
display: inline-block;
}

table{
border: 1px solid #ccc;
border-radius: 5px;
float: left;
margin: 10px
}

.control{
padding: 10px 0px 20px 0px;
margin: auto;
}

.control #slider{
margin: 10px;
}

コメント

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