目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

TwitterからEvernoteに投稿するプログラムを書いてみる 1

今月の目標に上げていたにもかかわらず、全く手を付けていなかったのでそろそろ着手してみる。
開発言語は何でも良かったのですが、ちょうどRubyKaigiが開催中なので、ruby1.9.1でやってみます。

環境構築

とりあえず、rvmだけ入っている、まっさらな状態から始めます。
Twitterのoauthのところでopensslが必要なのでオプションを付けてrubyをインストールします。

rvm remove 1.9.1
rvm package install openssl
rvm install 1.9.1 -C --with-openssl-dir=$HOME/.rvm/usr

rubyのインストールが終わったら、twitterモジュールをインストール。
いつもみたいに一から実装する面倒なことはしません。時間がないので。

rvm use 1.9.1
gem install twitter

アプリケーションの登録

TwitterでOAuth認証するにはアプリケーションをTwitterに登録する必要があります。
下記のリンクに飛んで、Consumer key とConsumer secretを取得してください。

Access Tokenの取得

それプラス、認証ユーザごとのAccess Tokenが必要なので下記のリンクにあるスクリプトを使用して取得してください。

Twitterから自分のタイムラインを取得してみる。

まずは自分のタイムラインを取得する簡単なスクリプトを仮実装してみます。

tw2ev/oauth.rb

Twitterの認証するモジュール

require 'twitter'

# FIXME: プログラムに直接トークンをかくのはイケてない実装
APP_TOKEN = [
  'Consumer key',
  'Consumer secret'
]
USER_ATOKEN = [
  'Access key',
  'Access secret'
]

def authorize
  oauth = Twitter::OAuth.new(*APP_TOKEN)
  oauth.authorize_from_access(*USER_ATOKEN)
  return Twitter::Base.new(oauth)
end

user-timeline.rb

第一引数にユーザ名を入れて実行するとそのユーザのタイムラインが取得できます。
ちょっとわかりにくいのでプロンプトに色づけしています。^[ は、Ctrl + v の後にEscを押すと出力されます。

require 'tw2ev/oauth'

twitter = authorize

twitter.user_timeline(:id => ARGV[0]).each { |status|
  puts '^[[38;5;45m* ' + status.id.to_s + ': ' + status.created_at  + '^[[0m'
  puts status.text
}

とりあえず、ここまで。これからどうやってEvernoteと連携するかの仕様を考えていきます。