読者です 読者をやめる 読者になる 読者になる

ayihiscope

主に情報系の話題が好きな大学生の雑記!

Rubyで特定のTwitterアカウントの投稿した画像を取得する

プログラミング Twitter Ruby

coding

ちょっとたくさん画像が欲しい事があったので,Twitterから画像だけをばんばん保存するコードをRubyで書いた.

具体的にはでんぱ組.incのメンバー6人のTwitterアカウントをできるだけ遡って画像を保存するようにしたよ.

概要

でんぱ組のメンバー6人のアカウント

のアカウントを過去3200ツイートまで遡って,画像が存在すれば保存します.

保存するのは./twitter-images/<メンバーの名前>/<画像の名前>

みたいな感じで保存されます.

工夫した点

通信とファイル書き込みがあるので並列で実行できると良いかと思って,Parallelのライブラリを使ってみた

テスト環境

  • ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
  • gem 2.5.1
    • parallel (1.9.0)
    • twitter (5.16.0)

環境構築

RubyさえあればOKですが,twitterとかparallelとかがなければgemでインストールして下さい.

% gem install twitter parallel

Twitter API的な制限

  • 遡って最大3200ツイートが限界

  • リクエスト回数制限 180回/15分

  • 1回のリクエストで取得できるツイートは最大200ツイート

今回はでんぱ組メンバー6人だけなので,

[3200ツイート] × [6人] / [200ツイート] = 96 < 180

なので,一気にリクエストを投げても問題無いです.

何度も実行したらもちろんだめですが.

もっとたくさんアクセスしたい場合にはいい感じにsleepを挟んだりして180リクエスト/15分制限を回避してね!*1

コード

参考

GET statuses/user_timeline — Twitter Developers

rubyでTwitterから画像urlを取得する - Qiita

RubyのTwitter gemを使ってTwitterのタイムラインを取得する。もっとたくさん。 - 7rpn’s blog: うわああああな日常

statuses/user_timeline - ユーザーのツイートを取得 | Twitter Rest API 日本語リファレンス

*1:でも今回のコードだとParallelで動いてるからsleepのはさみ方難しいかもしれない