My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
$LOADED_FEATURES.push("rss/taxonomy.rb")
require 'cgi'
require 'net/http'
require 'rubygems'
require 'hpricot'
require 'nkf'
require 'rss/1.0'
require "rss/maker"
require 'rss/dublincore'


class AbroadAirRss

def initialize( params = {})
@server = "www.ab-road.net"
@path = "/cgi-bin/abr/jaweb/cjaw1_3_1.cgi"
@html = nil
smonth = (Time.now + (3600*24*10)).month
sday = (Time.now + (3600*24*10)).day
@queries = {
'orgcode' => 'TYO',
'smonth' => smonth,
'sday' => sday,
'area1' => "",
'destcode1' => "",
'destname1' => "",
'area2' => "",
'destcode2' => "",
'destname2' => "",
'area3' => "",
'destcode3' => "",
'destname3' => "",
'aircode' => "",
'starttzone'=> 0,
'stay_length'=> 0,
'round_trip'=> 1,
'ditail' => 1,
'root_type' => "01",
'site_code' => "01",
'agent_id' => '',
'action_type'=> 4,
'sort_order'=> "low",
}.update(params)
end

def request_uri
q = []
@queries.each do |k,v|
v = CGI.escape(NKF.nkf('-W -s -cp932',v)) if k.index(/^destname\d$/)
q << "#{k}=#{v}"
end
Net::HTTP.version_1_2
return "#{@path}?#{q.join('&')}"
end

def html()
return @html if @html

uri = self.request_uri
req = Net::HTTP::Get.new(uri)
Net::HTTP.start(@server) do |http|
response = http.request(req)
case response
when Net::HTTPSuccess
@html = NKF.nkf('-w -S -cp932', response.body)
if @html.index(/というワードを含む都市が/)
doc = Hpricot(@html)
citycode1 = doc.at("dl#freeword1 input[@value]").attributes['value']
print citycode1
@queries['destcode1']=citycode1
@queries['destname1']=""
@html = nil
@html = self.html
end
else
@html = nil
end
end
return @html
end

def title
self.html.scan(/<title>(.*?)<\/title>/).each do |item|
return item.to_s
end
end

def url
return "http://#{@server}#{request_uri}"
end

def items
ticket = Struct.new("Ticket", :link ,:title, :price ,:airline ,:agent )
items = []
self.html.scan(/<!-- カセット(.+?)<!-- \/カセット-->/m).each do |item|
item = Hpricot(item.to_s)

link = (item/"a[@href]").first
myticket = ticket.new(
link[:href],
link.inner_text,
(item/"td.price").inner_text,
(item/"td.carr").inner_text,
(item/"strong.name").inner_text
)
items << myticket
end
return items
end

def rss
lastmodified = Time.now
self.html
rss = RSS::Maker.make("1.0") do |maker|
maker.channel.about = self.url
maker.channel.title = self.title
maker.channel.description = ""
maker.channel.link = self.url
maker.channel.dc_publisher = "http://www.ab-road.net/"
maker.channel.dc_language = "ja"
maker.channel.dc_creator = "http://rss.rdy.jp/ab2xml.cgi?"
maker.items.do_sort = false

self.items.each do |ticket|
item = maker.items.new_item
item.link = "http://#{@server}#{ticket.link}"
item.title = "#{ticket.price}/#{ticket.airline}"
item.description = "#{ticket.title} [取扱会社:#{ticket.agent}]"
item.date = lastmodified
end
end
return rss

end

attr_accessor :server,:path,:queries
end

Change log

r2 by takao.funami on May 5, 2009   Diff
ab-road
Go to: 
Project members, sign in to write a code review

Older revisions

All revisions of this file

File info

Size: 3472 bytes, 137 lines
Powered by Google Project Hosting