My favorites
▼
|
Sign in
irsssamples
rssを使ったサンプルコードたち
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
abroad-air-rss
/
lib
/
abroad-air-rss.rb
r2
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
Show details
Hide details
Change log
r2
by takao.funami on May 5, 2009
Diff
ab-road
Go to:
/trunk/abroad-air-rss
/trunk/abroad-air-rss/ab2xml.cgi
/trunk/abroad-air-rss/lib
...ad-air-rss/lib/abroad-air-rss.rb
/trunk/abroad-air-rss/test
...-rss/test/test-abroad-air-rss.rb
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 3472 bytes, 137 lines
View raw file
Powered by
Google Project Hosting