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なんかも使う必要ありそうですが

 

とりあえず、ここらへんで終わります