Twitterの検索APIの画像を取得するために実体化するPHPのコード。[‘entities’][‘media’][‘media_url’]について
目次
Twitterの検索APIを使ってツイートに添付されている、画像の取得をしたいと考えています。その方法はこちらのブログ(新しいタブで開く)で紹介されています。
Twitterオブジェクトの実体化
Twitter Developersのドキュメンテーション(新しいタブで開く)を調べると、引数(Parameters)のうち、include_entitiesをtrueにしておけばOKかと。
$param = array( "q"=>$keywords, // keyword "lang"=>"ja", // language "count"=>100, // number of tweets "result_type"=>"recent", // result type "include_entities"=>true // entities );
include_entitiesのentities(新しいタブで開く)とは、Twitterで使われている、オブジェクトの実体化のことを指していると考えられます。
この実体化できるオブジェクトは、主に4つに分かれています。
- Tweets
- Retweets
- Users
- Direct Messages
中でも、Tweetsオブジェクトは、さらに4つに分けることができます。
- media
- urls
- user_mentions
- symbol
これらの中でも、特にmedia(新しいタブで開く)を実体化すれば、ツィートに添付されている画像が取得できるようです。ドキュメンテーションを見ると、次のように説明されています。
The media entity
An array of media attached to the Tweet with the Twitter Photo Upload feature. Each media entity comes with the following attributes:
※ただし、このドキュメンテーションを読む限り、複数の画像取得については言及されていません。おそらく、SearchのAPIではできないかと思われます。(新しいタブで開く)
オブジェクトを実体化するコードについて
ここから、例えば、
<?php echo $tweet['entities']['media']['media_url']; ?>
という具合にすれば、
https://pbs.twimg.com/media/○○○○○○○○○○○○○○○○.jpg
というアドレスが取得できるはず。ただし実際にやってみると、下記のとおり、画像は表示されません。黒丸のliタグのところに、ツィートに添付している画像を表示させるつもりです
おそらく上記のコードでは、Twitterオブジェクトを実体化するためのコードが、間違っているのではないかと推測します。一応、このコードもGitHubにアップロードしておきます。上記のPHPに関わるコードは、twitter.phpの75行目にあります。
echizenyayota/tw_entities1 Github
https://github.com/echizenyayota/tw_entities1(新しいタブで開く)
追記:2014年9月27日
この記事を書いたのちに、ブログの読者の方からPHPのコードに関するアドバイスをいただくことができました。
教えていただいた内容とは、[‘media’]と[‘media_url’]の間に[0]を入れることです。こうするとURLが出力されます。
<?php echo $tweet['entities']['media'][0]['media_url']; ?>
https://pbs.twimg.com/media/○○○○○○○○○○○○○○○○.jpg
またイメージタグのsrc属性に入れることで、画像が表示されるようになります。
<img src="<?php echo $tweet['entities']['media'][0]['media_url_https']; ?>
〔参考サイト〕