Twitterお天気ボットの作り方まとめ

マッシュアップを利用したTwitterアプリ開発の話もあり、
ちょっと調べてみたらすごく簡単そうだったので、
天気情報を自動でつぶやくアプリを作ってみました。


Twitter APIはもちろん、
Rubyマッシュアップも初めて、
という状態から出発しても、
数時間でできてしまうと思います。


以下に手順をまとめておきます。

1.Rubyをインストールする

インストールファイルをダウンロードして実行するだけ!
初心者のためのRubyインストールガイド

2.Twitter4Rをインストールする

    1. [すべてのプログラム]からRubyGems Package Managerを起動
    2. コマンドプロンプトより「bin\gem install twitter4r」でインストール開始
    3. コマンドプロンプトより「gem list --local」でTwitter4Rのバージョンを確認

3.ソースを書く

weather.rb

require('rubygems')
gem('twitter4r', '>=0.X.X') # Twitter4R version
require('twitter')
require 'net/http'
require 'rexml/document';
require 'kconv'


# set twitter account
account = {
  'login' =>'xxx',
  'password' =>'xxx',
}


# make twitter client
client = Twitter::Client.new(
  :login => account['login'],
  :password => account['password']
)


# get rss and update
req = Net::HTTP::Get.new('/forecast/rss/13/63.xml')
Net::HTTP.start('weather.livedoor.com') do |http|
  res = http.request(req)
  doc = REXML::Document.new(res.body)
  doc.elements.each('rss/channel/item[2]/title') do |element|
    client.status(:post, element.text)
    puts element.text.tosjis    
  end
end

4.タスクスケジューラへ登録する

※下記はVistaでのやり方

    1. [管理ツール]からタスク スケジューラを起動
    2. 実行プログラムとして、"ruby.exe"を指定
    3. 引数に"weather.rb"のフルパスを指定
    4. 実行間隔(トリガ)を設定
    5. 作成したタスクを実行

5.完成

http://twitter.com/NewsTwitTest
Twitterでは同じ内容の連続投稿はできない仕様になっているようです。
 なので、このプログラムでは天気情報の内容が変わらない限り、
 何度ボットがプログラム実行してもtwitterには反映されません。


参考

Twitterの本

Twitterの本