Twitter CLI Tool Set

コマンドラインから Twitter のタイムラインにアクセスするプログラム tw と、それに合わせて使う補助プログラム twxml2tsv、Twitter ユーザの情報を取得する twu、投稿する twp。ただし Mac OS X 10.4 以降専用。いずれのプログラムも(twxml2tsvを除く)、「-service wassr」というオプションを付けると Twitter ではなくて wassr にアクセスすることができる(はず)。作者が wassr のアカウントを持っていないので、public なタイムラインでしか試していないけど。また、Twitter でさえ全部の機能を使えるわけではないので、wassr 独自の機能にも当然対応はしてないが、wassr の Twitter 互換API を使っている部分についてはアドホックに対応してると思う。しかし互換とは言いなが微妙な互換だな。

  • tw
  • twxml2tsv
  • twu
  • twp

tw は Twitter のタイムラインを取得して標準出力に出力する。オプションは以下の通り。

  • -t TIMELINE
    • 取得するタイムラインの種類を指定する。TIMELINE の値は以下のどれか。"a" または "archive" でアーカイブ(厳密にはタイムラインではない?)、"p" または "public" で public timeline を、"f" または "friedns" で friends timeline を、"r" または "replies" で replies timeline を取得する。"u" または "user" で user timeline を取得するが、user timeline を取得するときに -user USENAME オプションを使うことで特定のユーザのタイムラインのみを取り出すことができる。アーカイブの取得が deprecate されてしまったので、本人分の取得には -user オプションを指定せずに user timeline を指定すればいい(-t u)。
  • -u USER -p PASSWORD
    • Twitter のユーザ名とパスワードを指定する。ユーザ名は登録したメールアドレスでもよい。~/.twitterpass に改行文字で区切ってユーザ名とパスワードを書いておけば(permission を 600 か 400 にしておくこと)、そちらの値を使うが、オプションがあればそれを優先する。public timelineを取得するときにはなくてよい。wassr の場合は ~/.wassrpass を参照する。
  • -f FORMAT
    • 取得するタイムラインのフォーマットを指定する、指定できるのは "xml", "rss", "atom", "json" で、archive 以外のデフォルトは "rss"。archive を取得するときのデフォルトは "xml" (archive は rss で取得できないため)。
  • -page PAGE
    • 取得するタイムラインのページを指定する。タイムラインの種類との組み合わせによっては無効。
  • -count COUNT
    • 取得するステータスの数を指定する。-page オプションと併用はできない。

たとえば、ユーザ hoge がパスワード fugafuga で friends timeline を "atom" で取得するなら、

tw -u hoge -p fugafuga -t f -f atom

とすればよい。

補助プログラム twxml2tsv は tw が出力する xml 形式のタイムライン(アーカイブ)を標準入力から読み込んで、一エントリ一行で読める形に整形して標準出力に出力する。今のところは、発言日時とID、発言内容、名前、スクリーン名(screen name)だけをこの順番でタブで区切ったものを出力する。テキストは UTF8 でエンコードされているので、他で利用する場合には変換する必要があるかもしれない。

tw -t a | twxml2tsv | nkf -Ws > /tmp/archive.sjis.txt

twu は Twitter のユーザ情報を取得する。オプションを指定しない状態では、~/.twitterpass に書かれたユーザ情報を、-user USER と指定した場合(以前の -u から変更)には USER に関する情報を取得する。とりあえず作っただけなので、パスワードなどの認証情報を指定するオプションを付けておらず、~/.twitterpass が今のところ必要。

twp は標準入力から入力されたものをそのまま Twitter に投稿する。これも twu 同様 ~/.twitterpass が必要。文字数などのチェックは一切していないので、問題があった場合にどうなるかは不定。wassr でも動くんじゃないかと思うが……。

添付されたファイルは、ソースコードを tar + gzip でまとめたもの。Developer Tools がインストールされていれば、適当な場所に展開してできたディレクトリに移動して、 make 一発でコンパイルできるはずなので、tw、twxml2tsv、twu を /usr/local/bin あたりにコピーすればよい。

  • (2009-06-13)Tsitpocalypse 対応で、twxml2tsv.m で NSInteger を使っていた status_id などを long long で処理するようにした。
  • (2009-01-18) -count オプションを追加。twxml2tsv で ID を出力するようにした。
  • (2008-11-07) user timeline 取得時に対象となるユーザを指定するオプション -user USERNAME を追加した。
  • (2008-09-24) アーカイブの取得が deprecated になっていることに気付いた。
  • (2008-07-13) Basic 認証の使い方を間違っていたのを直した。これに関しては http://homepage.mac.com/t_yamane/prog/Base64/page.html のサンプルコードにある Base64 エンコーダをそのまま使わせてもらった。グース(t_yamane@mac.com) さんありがとう。