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

twitter APIのUser method使ってみた

流行に乗ってtwitterのデータを使うアプリを作ってみた。
作ったのはtwitterのアカウント情報を収集して、そのアカウントの概要情報とタイムラインへのリンクを表示するようなもの。
twitter APIドキュメント(http://apiwiki.twitter.com/Twitter-API-Documentation)にあるusers/showを使って収集した。
その過程で気になった部分のまとめ。

API解説

まとめの前にtwitter APIの解説。
APIはHTTPリクエストを使ってXMLやjsonのフォーマットでユーザ情報、ツイート情報をとってきたり、
oauthの認証方式を使ってtwitterアカウントでの認証をすることができる。

今回説明するusers/showのデータはこんな感じ
http://apiwiki.twitter.com/Twitter-REST-API-Method:-users%C2%A0show

<?xml version="1.0" encoding="UTF-8"?>
<user>
<id>1401881</id>
<name>Doug Williams</name>
<screen_name>dougw</screen_name>
<location>San Francisco, CA</location>
<description>Twitter API Support. Internet, greed, users, dougw and opportunities are my passions.</description>
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/59648642/avatar_normal.png</profile_image_url>
<url>http://www.igudo.com</url>
<protected>false</protected>
<followers_count>1031</followers_count>
<profile_background_color>9ae4e8</profile_background_color>
<profile_text_color>000000</profile_text_color>
<profile_link_color>0000ff</profile_link_color>
<profile_sidebar_fill_color>e0ff92</profile_sidebar_fill_color>
<profile_sidebar_border_color>87bc44</profile_sidebar_border_color>
<friends_count>293</friends_count>
<created_at>Sun Mar 18 06:42:26 +0000 2007</created_at>
<favourites_count>0</favourites_count>
<utc_offset>-18000</utc_offset>
<time_zone>Eastern Time (US & Canada)</time_zone>
<profile_background_image_url>http://s3.amazonaws.com/twitter_production/profile_background_images/2752608/twitter_bg_grass.jpg</profile_background_image_url>
<profile_background_tile>false</profile_background_tile>
<statuses_count>3390</statuses_count>
<notifications>false</notifications>
<following>false</following>
<verified>true</verified>
<status>
<created_at>Tue Apr 07 22:52:51 +0000 2009</created_at>
<id>1472669360</id>
<text>At least I can get your humor through tweets. RT @abdur: I don't mean this in a bad way, but genetically speaking you're a cul-de-sac.</text>
<source><a href="http://www.tweetdeck.com/">TweetDeck</a></source>
<truncated>false</truncated>
<in_reply_to_status_id></in_reply_to_status_id>
<in_reply_to_user_id></in_reply_to_user_id>
<favorited>false</favorited>
<in_reply_to_screen_name></in_reply_to_screen_name>
</status>
</user>

userタグで1件のユーザ情報になっている。
この中で今回使ってみたデータは

  • id:アカウント固有の整数識別ID。アカウントが作られた順に割り振られている(多分)。
  • name:普通の個人名やハンドルネーム
  • screen_name:アカウント固有の文字列ID
  • location:現在地に表示されるやつ
  • description:自己紹介
  • profile_image_url:アカウントに設定する画像アイコンのURL
  • url:個人のwebサイトアドレス
  • protected:公開・非公開設定
  • followers_count・フォローされてる数

などがある。

気になった部分

アカウント名が入ってない

twitterで個人のタイムラインを見るとき、http://twitter.com/アカウント固有の文字列IDで見れるが、
この文字列IDがあるはずのscreen_nameに値が入ってないアカウントもある。
消されたアカウント情報を要求するリクエストには404が返ってくるので、正常レスポンスを返せば存在するはずだが…

screen_nameの間にスペースが入っているアカウントがある

同じくscreen_nameの文字列にスペースが入っていることがあり、
タイムラインへのリンクを作るときなどに厄介になる。

protectedが空のことがある

公開・非公開設定でtrue/falseが入ってるはずが何も入ってないアカウントがある。

profile_image_urlやその他の文字列のデータには、HTMLの特殊文字が入っている

このへんの文字が使われているものがある。
http://e-words.jp/p/r-htmlentity.html
見かけたデータだとポルトガル語が&#○○;の形式で入っていて、デコードが厄介だった。

IDの下1桁が3のアカウントしか作られないゾーンがある

idが15000〜85000くらいの範囲で下1桁が3のアカウントしかない。
おそらくデータの管理上で何かやっていたんだと思うが、どんなことをしてたのかちょっと気になった。
85000からもうちょっと上にいくと、下1桁が3なのは変わらず10の位と100の位でも少し間隔が空き始める。

まとめのまとめ

とりあえず気になった点はこんな感じ。
今18万件くらい収集したけど、またなんか気になるデータが取れたらまとめる。
あとGAE/pythonでつくってるのでその辺の使い方も書くかも。