Rubyで特定のTwitterアカウントの投稿した画像を取得する
ちょっとたくさん画像が欲しい事があったので,Twitterから画像だけをばんばん保存するコードをRubyで書いた.
具体的にはでんぱ組.incのメンバー6人のTwitterアカウントをできるだけ遡って画像を保存するようにしたよ.
概要
でんぱ組のメンバー6人のアカウント
- 古川未鈴 (@FurukawaMirin) | Twitter
- 相沢梨紗 (@RISA_memesama) | Twitter
- 夢眠ねむ (@yumeminemu) | Twitter
- えいたそ☆成瀬瑛美 (@eitaso) | Twitter
- 最上もが (@mogatanpe) | Twitter
- ピンキー☆藤咲彩音 (@PINKY_neko) | Twitter
のアカウントを過去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のはさみ方難しいかもしれない