twitterAPI1.1でのユーザ情報の取得とかフォローとかをRubyのgemでやってみる

3b19eb0c-s

twitterAPIが1.0のときはOAuth認証なしで気軽にAPI叩いて情報取れたーっていう投稿をしたのですが1.1になってできなくなりました。

てゆーても先月の話だけど。。

今日久々にAPIからユーザの情報取得や一括でフォローしたりリムったりする事になったのでそのあたりをメモっておきます。
※自分のアカウント(@altarf8)の話ではないです。 お仕事でやってる事の話です(╹◡╹)

2013/12/21 追記
最近twitter gemが大幅にバージョンアップして、gem install twitter すると最新の5系が入るかと思います。
このエントリで使ってるクラスとかは5系で全部消えたっぽいのでww
取り急ぎ5系使う人は公式のDocument → http://rdoc.info/gems/twitter こちらを御覧ください。

screen_nameからユーザの情報をひっぱる

まずはユーザの情報をひっぱる。

screen_nameはURLとかにも埋め込まれてるから、扱いやすいですよね。
API1.0だったときは
https://api.twitter.com/1/users/lookup.json
これを叩くだけでした。 (xml版もあった) なので気軽にコンソールからwgetとかできたりしたんですよね。

けど今これを叩くと、ステータスコード410 Gone (もう今後使わないぜこのURL)が帰ってきます。
JSONで

  • message”: “The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.”,
  • “code”: 68

と返却されると思う。
これがV1.1だと相当するAPIは /1.1/friendships/lookup.json
バージョン以下のパスも変わってました。

オフィシャルのページはここ
https://dev.twitter.com/docs/api/1.1/get/friendships/lookup

で、gemのtwitterでは

Twitter.friendships(“user1”,”user2”, .... )

とするだけ。

gemの方のDocumentはここ
http://rdoc.info/gems/twitter/Twitter/API/FriendsAndFollowers:friendships
というわけでソースはこう

require 'rubygems'
require 'twitter'

CONSUMER_KEY         = "XXXX"
CONSUMER_SECRET      = "XXXX"
ACCESS_TOKEN         = "XXXX"
ACCESS_TOKEN_SECRET  = "XXXX"

Twitter.configure do |config|
   config.consumer_key = CONSUMER_KEY
   config.consumer_secret = CONSUMER_SECRET
   config.oauth_token = ACCESS_TOKEN
   config.oauth_token_secret = ACCESS_TOKEN_SECRET
end

Twitter.friendships('user1','user2','user3').each do |user|
   puts user.name
end

もちろんruby1.9ではrequire ‘rubygems’は不要です。

friendshipsの引数はカンマ区切りでscreen_nameをシコシコ入れれば、入れた分だけユーザ情報が入ったインスタンスの配列が帰ってくる。

引数は何個まで入れれるの?というと100個までOKらしい。(API側の制約)

引数はscreen_nameだけでなくidでも可能だし配列で入れても可能

screen_nameでなく、ユーザのidだけカンマ区切りで入れてもOKです。

あと、公式のドキュメント見た時 えええ カンマ区切りですの?
っておもったけどscreen_nameをパコパコ入れた配列でも大丈夫でした。

まぁドキュメントに書いてあるけど、screen_nameとidの混在もOKみたい。
懐ひろいね。

users = ['user1', 'user2', 'user3' ...]
Twitter.friendships(users)

フォローしたりリムったりする

フォローもアンフォローも超簡単

一度にフォローしたい場合は
Twitter.follow(users)

で、リムっちゃう時は
Twitter.unfollow(users)

これも引数はスクリーンネームもIDも可、配列でつっこめます。

たぶん普通にわかると思われますが、引数をコロコロ変えてループまわしたらAPIアクセス制限ひっかかるので、一発でキメよう。
(前回バカだったのでやらかした件)

ユーザオブジェクトから取得できるもの

先のfriendshipsメソッドに話が戻るんですが、戻り値のオブジェクトから取りたい属性をどうやってとるか?
というとここにドキュメントがございますた。
http://rdoc.info/gems/twitter/Twitter/User

たとえば、あるユーザのフォロワーの数を見たければ

user = Twitter.friendships('user1')
puts user.followers_count

な感じで。

というわけで、screen_nameやIDが取得できればそこからユーザの色んな情報を引っ張ってきて、吟味してフォローするもよし、リムるもよし。

おわり

2013-07-05 | Posted in twitter API1 Comment » 


関連記事

コメント1件

 るぶたん | 2013.07.21 14:03

twitterAPI1.1でのユーザ情報の取得とかフォローとかをRubyのgemでやってみる – Al Tarf.net

Comment





Comment



*