感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

TwitterAPIExchangeを使って、PHPで特定のユーザーのタイムラインの情報やリツイートされた回数を取得するサンプル

スポンサーリンク

特定のユーザーのタイムラインの情報を取得する

Developersサイトの情報は以下の通り。
https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

TwitterAPIExhangeは以下のgithubからダウンロードして適当にrequire_onceなどして使う。このサンプルでは取り込む部分は省略している。
https://github.com/J7mbo/twitter-api-php/blob/master/TwitterAPIExchange.php

サンプルはこんな感じ。

//****サンプルここから*******

$target_name = 'kazu_fujisawa'; 
$consumerKey = 'Xli7rhlH4ovsSRGgbcao3Q';
$consumerKeySecret = 'nacSpuTayMPszRIqpOFJFYmmNbAOE47bn00EHikWres';
$accessToken = '927525590-KOgifr1Jux6QVvm7RqLPAnGWXNe8aZ0RiH7noWE';
$accessTokenSecret = 'uXwlxk4UsBeflSEjMyurNAN7UPoZbTxPfQ0PX5N2A';
$count = 10; //カウント分だけタイムラインの情報を取得する。
 
$settings = array(
  'oauth_access_token' => $accessToken,
  'oauth_access_token_secret' => $accessTokenSecret,
  'consumer_key' => $consumerKey,
  'consumer_secret' => $consumerKeySecret
);
 

//$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name='. $target_name .'&count=' . $count;
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)
                    ->buildOauth($url, $requestMethod)
                    ->performRequest();

$response = json_decode($response, true);

$errors = $response["errors"];

if (!empty($errors)) {
  foreach($errors as $error){
    $code = $error['code'];
    $msg = $error['message'];
    echo "<br><br>Error " . $code . ": " . $msg;
  }
} else {
  $i = 1;
  foreach ($response as $timeline) {
    $text = $timeline['text'];
    echo $i . '<br>';
    echo $text .'</br><hr>';
    $i++;
  }
}

このサンプルを実行すると、アクセストークンなどを設定したユーザーのタイムライン情報を取得することができる。
結果はこんな感じになる。
f:id:sho322:20131210014948p:plain

up to a maximum of 200 per distinct request.

とあるので、ツイッターのAPIを使って一度に取得できるのは200件まで。

リツイートされた回数を取得してみる

上のサンプルをちょろっとだけ追記して、100回以上リツイートされたものだけ表示できるようにしてみる。
上の例のif文以下だけ抜粋して変更。

//上の方省略
if (!empty($errors)) {
  foreach($errors as $error){
    $code = $error['code'];
    $msg = $error['message'];
    echo "<br><br>Error " . $code . ": " . $msg;
  }
} else {
  $i = 1;
  foreach ($response as $timeline) {
    $text = $timeline['text'];
    $retweet_count = $timeline['retweet_count'];

    if ($retweet_count >= 100) {
      echo $i . '<br>';
      echo 'リツイートされた回数:' . $retweet_count .'</br>';
      echo $text .'</br><hr>';    
    }

    $i++;
  }
}

以下の部分でリツイートされた回数を取得できる。

$retweet_count = $timeline['retweet_count'];

有名人とか、ただの宣伝ツイートはあまりリツイートされないから、リツイート回数を多めに設定すると名言だけを抽出できる。
kazu_fujisawaさんの場合はこんな感じになる。
f:id:sho322:20131210014718p:plain

PHPTwitterを操作するのも慣れたら楽しくなってきた。
前はtwitter4jの便利さに甘えきっていたけれど、TwitterのDeveloperページをちゃんと見るきっかけになったし、やってみてよかった。

今週は引き続き、PHPで色々遊んでみたい。
前半はTwitter、後半はFacebook、来週はpocketのAPIかな。あと、はてなブログも。