長いこと、放置してあった twitter をアクセスしてみました。面白さは見えてこないんですが、日々の記録用に使ってみることにしました。
色々、自分用のツールを作ろうと思い Twitter4R をインストールして、投稿とタイムライン?の表示ができたので、メモしておきます。
** インストール 普通に Rubygems を使ってインストールしました。
||
gem install --remote twitter4r
Bulk updating Gem source index for: http://gems.rubyforge.org Building native extensions. This could take a while... Successfully installed json-1.1.2 Successfully installed twitter4r-0.3.0 2 gems installed Installing ri documentation for json-1.1.2...
No definition for cState_configure
No definition for cState_configure Installing ri documentation for twitter4r-0.3.0... Installing RDoc documentation for json-1.1.2...
No definition for cState_configure
No definition for cState_configure Installing RDoc documentation for twitter4r-0.3.0... # ||< *1 *2
** 投稿とタイムライン表示のテスト
とりあえず、投稿とタイムラインを表示するスクリプトを組んで見ました。
|ruby|
!/usr/local/bin/ruby
# require 'rubygems' gem 'twitter4r', '>=0.3.0' require 'twitter' require 'twitter/console' require 'time' require 'kconv' require 'yaml' $KCODE='utf-8'
スクリプトは utf-8 で書いています。
とりあえず Windows と Linux/FreeBSD しか使っていないので、手抜きで出力コードを設定しています。
$env_code = Kconv::UTF8 if RUBY_PLATFORM =~ /mswin/i then $env_code = Kconv::SJIS elsif ENV['LANG'] =~ /euc/i $env_code = Kconv:: Kconv::EUC end
設定ファイルから ID とパスワードを読み込みます。
twitter = Twitter::Client.from_config( 'conf.yaml','test')
一行読み込んで、twitter に書き込みます。
msg = gets.chomp twitter.status(:post, Kconv.kconv( msg, Kconv::UTF8))
タイムラインを取得して表示します。
timeline = twitter.timeline_for(:me) do |status| puts Kconv.kconv( "#{status.created_at.to_s} #{status.user.screen_name} #{status.text} #{status.user.location}\n", $env_code) end ||<
ログインID とパスワードは ymal 形式のファイルに書いておきます。このソースの例だと conf.yaml という名前のファイルです。
|| test: login: ここにログインIDを書く password: ここにパスワードを書く ||< *3
*1:No definition for cState_configure と警告がでますが、ドキュメントのインストール時なので、無視します。
*2:Windows にインストールしたときには、json のインストール時にSelect which gem to install for your platform (i386-mswin32)と聞かれました、Windows マシンの開発環境の設定をしていないので、json 1.1.1 (mswin32)を選択しました。
*3:なお、このファイルの一行目の test と Twitter::Client.from_config の第二パラメータの test は対応しています。