twitter search apiを使って画像アリのツイートを拾ってみた
今回やりたかったことは
特定のハッシュタグがついたツイートの画像を収集したいということ
https://dev.twitter.com/docs/api/1.1/get/search/tweets
https://dev.twitter.com/docs/platform-objects/tweets
これを見たら解決でした(APIのリクエストとレスポンス)
まず以下のパラメータを設定
・q = "#" + ハッシュタグ
・count = 100(1回のリクエストで取得したい件数 ちなみに上限が100です)
・include_entities = 1(またはtrue 今回は画像を収集したかったのでこれが必要でした ツイートのメタデータが取得できるオプションらしいです)
で、あとは必要なパラメータを設定して「https://api.twitter.com/1.1/search/tweets.json」にリクエストするだけです
ちなみに100件以上ある場合もあるので、以下のような処理をつくってみました
while(1)
{
if(2回目以降) パラメータmax_idに$max_id-1の値をセット
$list = apiをたたいてそのレスポンス
foreach($list as $value)
{
画像を保存したりなどなど
$max_id = $value['id_str'];
}
if($listの件数 < 100件) break;
}
ここでやっていることは
例えばapiが返すツイートが250件あったとします
idは1~250として、最新の投稿ほど大きいidがふられます
で、このapiは結果の新しいもの順にかえしてくるので以下のようなことをやりたかったのです
1回目のリクエスト
id 250~151をかえす
2回目のリクエスト(max_idに150をセット)
id 150~51をかえす
3回目(max_idに50をセット)
id 50~1をかえす
といった感じです
他にもレスポンスの中にnext_pageという値を使えばokみたいです
また、これだと不完全で定期的に取得したりする場合はsince_idなんかも使う必要ありそうですが
とりあえず、ここらへんで終わります