[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:1321) Re: [XML] Weather Hacks
ちょっとクラスっぽく書き直してみた。
SSIのサンプル
http://www.seuzo.jp/st/WebApp/weather_test_ssi.html
erubyのサンプル
http://www.seuzo.jp/st/WebApp/weather_test_erb.cgi
サイトのアクセントに^^
スクリプトより説明がはるかに長い。
#っていうかこれくらいの短いやつならerubyの中にいれちまえよ^^
#! /usr/local/bin/ruby -Ku
=begin
livedoor_weather.rb
(c)2006 www.seuzo.jp
●動作環境
ruby 1.8.2以上
●Command Usage;
livedoor_weather.rb <encode> <city>
<encode> 出力文字コード
ISO-2022-JP jis(iso-2022-jp)
eucJP EUC_JP
SJIS Shift JIS
UTF-8 UTF-8
<city> cityコードはhttp://weather.livedoor.com/forecast/rss/forecastmap.xmlを参照
63 東京都
60 さいたま市
●Libraly Usage;
ex)
require "livedoor_weather.rb"
my_weather = Livedoor_weather.new("eucJP", "60")
print my_weather.my_title
ex) eruby
#! /usr/bin/eruby -Ke -C euc-jp
<%
require "/var/www/cgi-bin/livedoor_weather.rb"
my_weather = Livedoor_weather.new("eucJP", "60")
%>
<html lang="ja">
<head>
<title><%= my_weather.my_title %></title>
</head>
(以下略)
●History;
2006.3.5 ver. 0.1 とりあえず
2006.3.6 ver. 0.2 クラス定義
2006.3.6 ver. 0.3 nkfからiconvにした。
●注意事項
SSIやerubyで使われることを想定にしてるので、引数の検査や例外処理をまったくしていない。すまぬ、めんどいのだ。
=end
require 'open-uri'
require 'rexml/document'
require 'iconv'
class Livedoor_weather
#定数
Version = "0.3"
attr_reader :my_title, :my_telop, :my_description, :my_link
#+++++++++++++++++イニシャライズ
def initialize(my_encode, my_city)
my_uri = URI.parse('http://weather.livedoor.com/forecast/webservice/rest/v1?city=' + my_city + '&day=tomorrow')
my_html = my_uri.read
my_doc = REXML::Document.new(my_html)
@my_title = Iconv.iconv(my_encode, "UTF-8", my_doc.root.get_text("title").to_s)
@my_telop = Iconv.iconv(my_encode, "UTF-8", my_doc.root.get_text("telop").to_s)
@my_description = Iconv.iconv(my_encode, "UTF-8", my_doc.root.get_text("description").to_s)
@my_link = Iconv.iconv(my_encode, "UTF-8", my_doc.root.get_text("link").to_s)
end #initialize
end #class
if __FILE__ == $0 then
my_encode = ARGV[0]
my_city = ARGV[1]
my_weather = Livedoor_weather.new(my_encode, my_city)
print "#{my_weather.my_title}\n#{my_weather.my_telop}\n#{my_weather.my_description}\n#{my_weather.my_link}\n"
end