ターミナルで簡単に Twiter API を実行出来る「twurl」が便利
アプリケーションの登録申請
このコマンドは OAuth を利用する為、事前に「アプリケーションの登録申請」を行って OAuth よる Twitter のデータへアクセスを行える様にしておく必要が有ります。
この作業をまだ行ってない方は事前にこちらのページを参考に作業を事前に済ませておいて下さい。
TwitterのOAuth認証を使う - 強火で進め
http://d.hatena.ne.jp/nakamura001/20100519/1274287901
事前準備
このコマンドは裏では Ruby で実行されているみたいです。自分が試した時には Ruby 用の OAuth ライブラリが入ってない為、エラーが発生しました。
という事で OAuth のライブラリがインストール済みで無い場合はインストールをしましょう。
gem install oauth
このコマンドを実行した時に以下の様なエラーが出た場合には sudo を先頭に追加して sudo gem install oauth で実行して下さい。
ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.
認証作業
GitHub から twurl のファイルをダウンロードします。
marcel/twurl · GitHub
https://github.com/marcel/twurl
次に bin フォルダに移動し、以下を実行。
./twurl authorize --consumer-key the_key --consumer-secret the_secret
the_key と the_secret には「アプリケーションの登録申請」を行った後に発行される Consumer key と Consumer secret の文字列を記述します。
すると以下の様な出力がされます。
Go to https://api.twitter.com/oauth/authorize?oauth_consumer_key=(中略) and paste in the supplied PIN
URLにブラウザでアクセスし、 OAuth の許可をすると PIN (数字の羅列)が画面に表示されますので表示された数字をターミナルに入力します。
成功したら画面に「Authorization successful」と表示されます。
ここで設定した情報は ~/.twurlrc に保存されます。必要が無くなった場合は削除しておきましょう。
使ってみる
タイムラインを取得してみます。
./twurl /1/statuses/home_timeline.xml
取得したデータがずらずらと出力されたかと思いますがこれだとちょっとこれだと見づらいですね。ファイルに出力してブラウザで確認しましょう。
以下のコマンドを実行した後に output.xml をブラウザにドラッグして確認して下さい。
./twurl /1/statuses/home_timeline.xml > output.xml; open .
API
twurl に記述する API については Twiter のこちらのサイトを参照下さい。
REST API v1.1 Resources | Twitter Developers
https://dev.twitter.com/docs/api/1.1
こちらのドキュメントには以下の様な記述例が載っています。
https://api.twitter.com/1.1/statuses/mentions_timeline.json
ドメイン以降の部分を抽出して利用すればOKです。この API の場合は以下の様に使います。
./twurl /1.1/statuses/mentions_timeline.json
注意点
最初のタイムラインの取得では以下のコマンドを使いました。
./twurl /1/statuses/home_timeline.xml
しかし、この記述は API のバージョン 1.0の記述となります1.0は2013年3月5日までしか使えません。
Twitter API 1.0の期限などのメモ - 強火で進め
http://d.hatena.ne.jp/nakamura001/20121119/1353324290
それ以降は以下の様な記述になります。
./twurl /1.1/statuses/home_timeline.json
バージョン 1.0では以下の様にXMLとJSONのいずれのレスポンスも取得可能です。
./twurl /1/statuses/home_timeline.xml
./twurl /1/statuses/home_timeline.json
しかし、1.1からはJSONのレスポンスしか返してくれません。その点ご注意下さい。
ターミナルだとレスポンスが見づらい
レスポンスが数値文字参照( \u3066 の様な記述)に成っているのでターミナルだと見づらいという問題が有りますがこちらについてはこちらのブログで紹介されている方法を使うと良いでしょう。
ターミナルでtwurlの結果をjsonで出力する - webクリエイターのひとりごと
http://cutmail.hatenablog.com/entry/20101021/1287653522
API のバージョン 1.1で取得したデータを PHP で変換する場合の記述はこんな感じになります。
./twurl '/1.1/statuses/home_timeline.json' | php -r 'while(!feof(STDIN)) { print_r(json_decode(fgets(STDIN))); }'
Alias
twurl コマンドは便利ですが毎回こんなに長いコマンドを入力するのは大変です。しかし、 twurl には alias という便利な機能が有ります。
この様な記述をすると
./twurl alias h /1.1/statuses/home_timeline.json
以下の記述で同じコマンドを実行する事が出来ます。
./twurl h