2008/08/10

第4回道民開発オフに参加した

2008/08/10(日)は第4回道民開発オフでした。夜勤明けの翌日だったため寝坊し、さらに北海道大学の構内で迷子になるなど@hadzimmeに大迷惑かけまくったわけで、本当すみません。

まぁプロのプログラマに混ざって俺が何かできるわけじゃないんだけど、最近Rubyの勉強をしていたので、目標をTwitter4Rの使い方を調べることとしました。以下は結果。

(1)まずはgemをインストール。

$ sudo aptitude install rubygems

(2)Twitter4Rをgem使ってインストール。一緒にJSONも入った。

$ sudo gem install twitter4r
=>twitter4r-0.3.0
=>json-1.1.3

(3)とりあえず使ってみる。ログインから。

$ irb
> require "rubygems"
=> true
> gem "twitter4r"
=> true
> require "twitter"
=> true
> cl = Twitter::Client.new(:login=>"USERNAME",:password=>"PASSWORD")

(4)ポストする。

> cl.status(:post,"Twitter4Rからの投稿テスト")

(4)ID指定して投稿ゲット。

> cl.status(:get,"123456789")

(5)ID指定して投稿削除。

> cl.status(:delete,"123456789")

(6)タイムラインを取得する。timeline_forは:public、:friends、:friend、:user、:meが使える。userとmeはID指定して取得が出来るけど違いがよく分からない。

> tm = cl.timeline_for(:me) do |status|
* p status
> end

取得できる内容は以下みたいな感じ。

#<Twitter::Status:0xb7767cf0 @created_at=Sun Aug 10 14:23:32 +0900 2008, @client=#<Twitter::Client:0xb77d17a4 @login="smokeymonkey", @password="PASSWORD">, @user=#<Twitter::User:0xb7767bb0 @screen_name="smokeymonkey", @url="http://iddy.jp/profile/smokeymonkey/", @location="すすきの", @protected=false, @id=5217451, @profile_image_url="http://s3.amazonaws.com/twitter_production/profile_images/56938157/tw_face_normal.png", @description="フットバッグ部、アサラト部、ビール部、last.fm部、道民部。", @name="すもけ@煙猴">, @text="うぇびんぐすつーでぃおさんがやってきた", @id=883048799>

timeline_forで取得すると、client、user、text、idの要素がある。

> tm = cl.timeline_for(:me) do |status|
* p status.client
* p status.user
* p status.text
* p status.id
> end

出力結果は以下のようになる。

#<Twitter::Client:0xb77d17a4 @login="smokeymonkey", @password="PASSWORD">
#<Twitter::User:0xb7767bb0 @screen_name="smokeymonkey", @url="http://iddy.jp/profile/smokeymonkey/", @location="すすきの", @protected=false, @id=5217451, @profile_image_url="http://s3.amazonaws.com/twitter_production/profile_images/56938157/tw_face_normal.png", @description="フットバッグ部、アサラト部、ビール部、last.fm部、道民部。", @name="すもけ@煙猴">
"うぇびんぐすつーでぃおさんがやってきた"
883048799

userは更に以下要素をもっている

timeline = cl.timeline_for(:friends)
timeline.each {|status|
p status.user.screen_name
p status.user.url
p status.user.location
p status.user.protected
p status.user.id
p status.user.profile_image_url
p status.user.description
p status.user.name
}

出力結果は以下のようになる。

"smokeymonkey"
"http://iddy.jp/profile/smokeymonkey/"
"すすきの"
false
5217451
"http://s3.amazonaws.com/twitter_production/profile_images/56938157/tw_face_normal.png"
"フットバッグ部、アサラト部、ビール部、last.fm部、道民部。"
"すもけ@煙猴"


Twitter4Rはすごい簡単に投稿や取得が出来るので面白いです。PerlでやるときはXMLをParseしてたんですけど、Twitter4Rなら手軽に出来ますね。面白いのでちょっとしたものを作りました。

Last.fmのRecent TrackをTwitterに投稿するRubyスクリプト - smokeymonkey@ついったー部 - はてなグループ::ついったー部

よし、第4回開発オフの俺の作業は完了だ!