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

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Twitter Streaming APIのJSONの構造

プログラム

 Twitter Streaming APIで、sampleから返ってくるjsonの値。
ぱっと見たらよく解らなかったので、メモがてらにエントリー。

% curl http://stream.twitter.com/1/statuses/sample.json -uYOUR_TWITTER_USERNAME:YOUR_PASSWORD
{"coordinates"=>nil, "created_at"=>"Wed May 05 11:47:19 +0000 2010", "favorited"=>false, "truncated"=>false, "contributors"=>nil, "text"=>"Today.. I'm happy, but in other side, I'm sad... I don't know why it could happen..", "id"=>13421567803, "geo"=>nil, "user_id"=>63365081, "in_reply_to_user_id"=>nil, "in_reply_to_screen_name"=>nil, "user"=>{"profile_sidebar_fill_color"=>"e0ff92", "name"=>"Noor Ch Promogyasiwi", "profile_background_tile"=>false, "profile_sidebar_border_color"=>"87bc44", "profile_image_url"=>"http://a1.twimg.com/profile_images/798993858/DSC02587_normal.JPG", "location"=>"", "created_at"=>"Thu Aug 06 04:05:20 +0000 2009", "profile_link_color"=>"0000ff", "url"=>nil, "contributors_enabled"=>false, "favourites_count"=>0, "utc_offset"=>-28800, "id"=>63365081, "followers_count"=>8, "protected"=>false, "profile_text_color"=>"000000", "lang"=>"en", "geo_enabled"=>false, "verified"=>false, "notifications"=>nil, "profile_background_color"=>"9ae4e8", "time_zone"=>"Pacific Time (US & Canada)", "description"=>"", "profile_background_image_url"=>"http://s.twimg.com/a/1272410411/images/themes/theme1/bg.png", "statuses_count"=>17, "friends_count"=>6, "following"=>nil, "screen_name"=>"Nooryasiwi"}, "place"=>nil, "source"=>"Twitter for BlackBerry\302\256", "in_reply_to_status_id"=>nil}


ややこしい(?)ことに、statusとuserの属性がまとめて返ってきます。
理解する為に、一度xmlで取って構造を理解しておくことをお勧めします。

curl http://stream.twitter.com/1/statuses/sample.xml -uYOUR_TWITTER_USERNAME:YOUR_PASSWORD



Wed May 05 11:55:22 +0000 2010
13421898200
@Curlyminx He's looking much better, despite the new & interesting mottling. It's a relief that all his blood is staying on the inside
<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a>
false
13420990957
19793911
false
Curlyminx
16738672

16738672
laurie sage
lauriepink
manchestie
Drawer, but not the kind you keep pants in. Well, not usually anyway.
http://a3.twimg.com/profile_images/523020565/monkabum2_normal.jpg
http://www.flickr.com/photos/laurie_pink
false
1041
ffffff
333333
162283
ffb8de
112cac
337
Tue Oct 14 14:35:54 +0000 2008
48
0
London
http://a3.twimg.com/profile_background_images/6520325/twitbgshortleg.jpg
false

false
false

19958
en
false





 割と解りやすくなったと思います。statusの大部分は、userの属性情報で占められています。tweetに当たる部分は、 created_at,id,text,source,truncated,in_reply_to_status_id,in_reply_to_user_id,favorited,in_reply_to_screen_name,user_id,geo,coordinates,place,contributorsのみです。


以下、各項目の意味です。位置関係の属性は、今後整理されるようです。

created_at
 tweetされた時間。
id
 tweetのID。(呟き自体を一意に識別するID)
text
 tweetの本文。
source
 投稿したアプリケーション名。(ブラウザ名や、Twitterクライアントソフト)
truncated
 省略されているか否か
in_reply_to_status_id
 言及(mention)を投稿しようとする時に、その言及先のtweetのステータスID。
in_reply_to_user_id
 言及(mention)を投稿しようとする時に、その言及先のユーザID。
in_reply_to_screen_name
 言及(mention)を投稿しようとする時に、その言及先のユーザ名。
favorited
 (あなたの)お気に入り登録済みか否か
user_id
 投稿者のユーザID
geo
 緯度、経度
coordinates
 緯度、経度
place
contributors 
 複数人で共有しているアカウントの場合、誰が投稿したか


詳しい情報は、Twitter API プログラミングで詳しく書いてあります。なかなか便利な一冊ですよ。


Twitter API プログラミング
辻村 浩
ワークスコーポレーション
売り上げランキング: 1487