[Twitter API 1.1]PHPで色々な条件でツイートを取得する

Posted: 2013.09.06 / Category: PHP / Tag: Twitter
過去にいろいろとTwitterの記事を書いてきましたがバージョンが古いので、新たにAPI 1.1 用でまとめておきます。
前はjQueryを使用していましたが、アクセストークンなどを記述しないといけない関係でPHPを使用します。
Sponsored Link
アプリケーション登録
Twitter API を利用するにはアプリケーションの登録が必要です。
やり方は下記ページを参考に登録してください。
PHPでOAuth認証して自分のつぶやきを表示する [Twitter API 1.1 対応版]
認証ライブラリのダウンロード
認証にはライブラリを使用すると簡単ですので下記URLからダウンロードしましょう。
abraham/twitteroauth
使用するのは「twitteroauth」フォルダの「OAuth.php」「twitteroauth.php」ですので、フォルダごと自分のプロジェクトフォルダにコピーしておきます。
自分のツイート(タイムライン)を表示する
自分のツイートの取得は先ほど紹介したました過去記事そのままですね。
php
<?php require_once("twitteroauth/twitteroauth.php"); $consumerKey = 'xxxxxxxxxxxxxxxxxxx'; $consumerSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $accessTokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret); $req = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('count'=>'10')); $tweets = json_decode($req); if (isset($tweets) && empty($tweets->errors)) { echo '
- ';
foreach ($tweets as $val) {
echo '
- ' . date('Y-m-d H:i:s', strtotime($val->created_at)) . ' '; echo '
- ' . $val->text . ''; } echo '
- 1行目
- require_once でダウンロードしたライブラリを読み込みます。
- 3-6行目
- アプリケーション登録で取得してキーをそれぞれ入力します。
- 9行目
- Twitter API 1.1 を使用して自分のタイムラインを10件取得という条件でリクエストしています。
- 10-20行目
- 取得したツイートの表示部分です。var_dump($tweets) などで確認して好きなように表示してください。
指定ユーザーのツイート(タイムライン)を表示する
今度はユーザーを指定します。
$req を下記に置き換えます。
php
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET', array( 'count'=>'10', 'screen_name' => 'ユーザー名' ));
「ユーザー名」は取得したいユーザーに置き換えてください。
指定したリストのツイートを表示
作成したリストのツイートを取得してみます。
リストはたとえば社員のツイートだけを表示したいといったときに使えますね。
php
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/lists/statuses.json','GET', array( 'count' => '10', 'owner_screen_name' => 'ユーザー名', 'slug' => 'リスト名', ));
「ユーザー名」「リスト名」はそれぞれ取得したいリストに置き換えてください。
リストに登録しているユーザーの取得
ツイートじゃなくてユーザー情報を取得したい場合。
php
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/lists/members.json','GET', array( 'owner_screen_name' => 'ユーザー名', 'slug' => 'リスト名', ));
指定したハッシュタグで検索する
イベントサイトなどでは指定したハッシュタグのツイートを表示したいときがありますね。
例として「#wordpress」の「日本語」のツイートを取得してみます。
若干構造が変わるので、表示部分も書いておきます。
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json','GET', array( 'lang' => 'ja', 'q' => '%23wordpress' )); $tweets = json_decode($req); if (isset($tweets) && empty($tweets->errors)) { $tweets = $tweets->statuses; echo '<dl>'; foreach ($tweets as $val) { echo '<dt>' . date('Y-m-d H:i:s', strtotime($val->created_at)) . ' [' . $val->user->name . ']' . '</dt>'; echo '<dd>' . $val->text . '</dt>'; } echo '</dl>'; } else { echo 'つぶやきはありません。'; }
さらにユーザーで絞り込む
さらにユーザーも指定したいときは「+from:」でユーザー名を指定します。
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json','GET', array( 'lang' => 'ja', 'q' => '%23wordpress+from:username' ));
他にもいろいろと検索できますので公式ドキュメントなど参考にしてくさい。
REST API v1.1 Resources
COMMENTS
ハラ 2013-10-09 03:28
こんにちは、はじめまして。
色々と調べていて、コチラのサイトにたどり着きました。
で、最後の「+from:」でユーザーを絞り込む検索条件を付与すると、URLが含まれているツイートがはじかれてしまいました。
ためしに検索条件を「+from:~~」だけにしても同じ結果になってしまいました。
調べてみたのですが、自分の力ではさっぱり分かりませんでした。
どうしてなんでしょう?
webOpixel 2013-10-10 11:56
確認してみましたが表示されているみたいですね。
URLが含まれていないのは表示できているんですよね?
かなめ 2013-11-15 18:09
はじめまして。
検索して調べている最中にこちらの記事にいたりました。
さまざまな条件下でのtwitterAPIの利用方法をありがとうございます。PHPに関して専門でもなく個人の趣味範囲なので至らぬ質問かとは思いますが、「twitterに投稿された画像の取得」はできないでしょうか?
ギャラリーのように閲覧できたらいいなと思いまして。
他の連携サービスに投稿した画像ではなく、twitter「p.twimg.com」上にアップした画像の取得がしたいのですが、どう検索ワードを変えても「プロフ画像の取得」や「検索ワードの呟きの取得」にたどり着いてしまい(^^;)
自分の呟きを取得しサイトに表示、まではこちらの記事のおかげさまでできました。画像のリンクを取得しサムネイル表示できたらと思っています。
お忙しいところ教えてクンですみません。可能か不可能かだけでもご提示頂けましたら幸いです。
webOpixel 2013-11-20 14:35
p.twimg.comの部分だけを置き換えすれば表示はできそうですが、そういうわけではないんですよねー?
かなめ 2013-11-21 11:44
お返事ありがとうございます。
こちらの記事を参考にしつつまた色々調べまして、
$media_url_https=$oObj[$i_tweet]->entities->media[0]->{‘media_url_https’};
p.twimg.comでのURLを取得するまではできました!>画像の表示も
ただ、画像がある記事のみを取得して表示がしたいという上にコメントさせていただいたところにいきついておりません。ご助言頂けましたら幸いです。
webOpixelさまの記事内容から大幅に逸脱しておりまして申し訳ありません。
webOpixel 2013-11-22 10:37
1.0までは「media_timeline」というのがあったのですが、1.1でなくなってしまったようですね。
現状、画像がある場合のみ表示するということしかできない気がします。
かなめ 2013-11-23 01:52
お応えくださりありがとうございました!
media_timelineというのがあったのですね。うーん残念。
お手数をおかけいたしました。
Nao 2014-05-06 00:21
はじめまして。
指定ユーザーのツイートを取得する方法を探していて、このブログにたどり着きました。
「指定ユーザーのツイート(タイムライン)を表示する」という方法が大変わかりやすく実用的なのですが、max_idを利用して200件以上取得できるようにするには、どのようにソースコードを書き足せばよろしいでしょうか?
当方初心者のため、誠に不躾なお願いですが、お返事いただければ幸いです。
よろしくお願いいたします。