お天気bot onTwitter

ネタ元
http://d.hatena.ne.jp/nns/20090828/1251405749

コピペしただけ。



おぉ。動いた。

下記ソースのTwitter4rのVersionとユーザ/パスを書き換えるぐらい。


<ソース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


<実行結果>
C:\Documents and Settings\Administrator>weather.rb
[ 19日(金)の天気 ] 東京 - 晴時々曇 - 最高気温9℃ - 2月19日(金)

でもなぜコレが動くのに、こっちは動かないんだろうか?
同じライブラリ読み込んでるのに。
というかこっちのがソースは単純だし...

<ソース>
require 'net/http'

req = Net::http::Get.new('/')
Net::http.start('twitter.com') do |http|
res = http.request(req)
puts res.body
end

<実行結果>
C:\Documents and Settings\Administrator>twitter03.rb
C:/Documents and Settings/Administrator/twitter03.rb:8: undefined method `http' for Net:Module (NoMethodError)