2008-06-13

コマンドラインで Twitter を読む

Mac OS X のコマンドラインで Twitter のタイムラインにアクセスする小さなツールのセットを書いている。

自分の発言を全部取り出したかったのが作成のもともとの理由。とりあえず目的を達成することができたので、ちょっとだけ機能追加して公開してみる。「tw」では今のところはタイムライン(public, user, friends, replies, archive(厳密にはタイムラインと区別すべき?) )を、xml, rss, atom, json などのフォーマットで取り出すことができる。rss や atom の場合は、ファイルに保存して Safari で開けば読むことができる。

自分の発言のアーカイブは xml か json でしか取り出すことができない。json は無視するとして、xml フォーマットでの出力からタブ区切りで時刻・発言内容・名前(name)・スクリーン名(name) を出力するプログラム 「twxml2tvs」も合わせて作ってみた。
# 自分の発言のアーカイブを表示する
# (文字のエンコーディングはUTF8)。
tw -t a -u 名前 -p パスワード | twxml2tsv

# 同2ページ目
# (ユーザ名とパスワードは ~/.twitterpass に改行で区切って書いておくことができる)
tw -t a -page 2 | twxml2tsv

# zsh で複数ページを取り出す
# (注: API の制限があるので sleep を適当に挟む必要がある)
$ for page in {1..10}; do
tw -t a -page $p | twxml2tsv; sleep 1;
done > /tmp/tw_archive.txt

# public timeline を RSS で取得する(デフォルト動作)。
# public timeline の時はユーザ名とパスワードは不要(~/.twitterpass も要らない)
tw > /tmp/tw_public.rss
# Safari で表示
open -a safari /tmp/tw_public.rss

# friends timeline を取得。
tw -t f
tw には、タイムラインを指定する-tオプション(引数には archive(a), public(p), friends(f), replies(r)を指定)、引数にユーザ名を指定する -u オプション、パスワードを引数にする -p オプション、出力フォーマットを指定する -fオプション(引数は xml, atom, json , rss を指定)、ページを指定する -pageオプション(引数はページ番号) などのオプションがある。組み合わせによっては使えないものもあるけど、厳しいチェックはしていないので、なにが起こっても気にしないことが大事。

ユーザ名とパスワードの組は、上の例にも書いたけど、~/.twitterpass に改行で区切って書いておくことができ、この場合は -u や -p オプションは不要。人に見られないようにアクセスの権限を調整しておいた方がいいが、これもプログラムではチェックしないので要注意。

twxml2tsv は、xml で出力されたものを、一エントリ一行で出力する。オプションはない。出力内容は今は固定で、文字のエンコーディングも UTF8 固定なので、他のソフトウェアで出力を使う場合には変換する必要があるかもしれない。タブ区切なのでEXCEL でも使えるけど、一度ファイルニ出力したものを使うには EXCEL 2004 の場合は ShiftJIS に変更する必要があった。

あと、よく分からないのだけど NSURLRequest とか NSURLConnection とかを使っているからか、時々キーチェーンへのアクセス許可を求めるダイアログが表示される。とりあえず「許可」ボタンを惜せば問題なく動作はするけど、これはうっとうしいのでそのうちキーチェーンは使わないようにするつもり(できるかな?)。

Google Sites 上にもページを作ってみたのだけど、本当にどう使い分けるのがいいのだろう……

No comments: