RubyでTwitterを操作する方法
はじめに
TwitterAPIをwrapしたライブラリは以下の2つがあるようです
- twitter gem
- twitter4r
どちらがいいかは正直わかりません。パッと見twitter gemのほうがとっつきやすかったので twitter gem を使いました。以下、twitter gem の使い方です。
情報元
データ構造などはここで確認します。Twitter用語もちゃんと押さえておきましょう。
インストール
gemで一発です。
%gem install twitter When you HTTParty, you must party hard! Successfully installed rubyforge-1.0.3 Successfully installed hoe-2.0.0 Successfully installed ruby-hmac-0.3.2 Successfully installed oauth-0.3.4 Successfully installed mash-0.0.3 Successfully installed crack-0.1.2 Successfully installed httparty-0.4.3 Successfully installed twitter-0.6.11
「When you HTTParty, you must party hard!」ここは笑うところ、たぶん。
使い方
下位互換なくバージョンアップしてるので、gemでバージョンを確認してください。ここでは「twitter-0.6.11」です。また、日本語を使う場合は文字コードをUTF-8にします。
モジュールのロード
require 'rubygems' require 'twitter'
Search API
Sarch, Trendに関してはWebに例が載っていて、そのままで動作します。
- helloを含むつぶやきを検索
Twitter::Search.new('hello').each do |result| puts result.text end
- トレンドキーワードを取得
Twitter::Trends.current.each {|trend| puts trend.name }
REST API
REST APIを使った一連の処理をいかに示します。
ログイン認証はOAuthを使う方法もありますが、ここではHTTP Authを使います。
#ログイン認証 httpauth = Twitter::HTTPAuth.new("user", "password") twit = Twitter::Base.new(httpauth) #タイムラインを取得 twit.friends_timeline.each {|status| p status.text + status.user.screen_name } #新規tweat msg = "Rubyの世界からこんにちは" twit.update(msg)
queryパラメータの指定方法
パラメータはハッシュで渡します。
twit.followers({'page' => '2'}).each {|follower| p follower.screen_name }
ちなみに、本家のマニュアルに、
100 at a time
と書いてありますが、98しか取れなかった。。。
なので、全件取得したい場合の継続条件には使えません。
機能追加
mentions (@レスが付いたtweet) を取得するAPIが実装されてなかったので追加しました。わかりやすい実装でよかった^^
module Twitter class Base def mentions(query={}) perform_get('/statuses/mentions.json', :query => query) end end end
メモ
- 一時間当たり100リクエストまで、という制限があるのでテスト時にあまり頻繁にアクセスするとエラーになってしまいます。頻繁にアクセスしたい場合は、テスト用のアカウントを別につくっておいたほうがいいかも知れませんね。
(400): Bad Request - Rate limit exceeded. Clients may not make more than 100 requests per hour. (Twitter::RateLimitExceeded)
以上です。