meimei 0.1.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +20 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +40 -9
- data/VERSION +1 -0
- data/cron.sh +8 -0
- data/lib/meimei/client.rb +18 -8
- data/lib/meimei.rb +0 -25
- data/plugins/an2.rb +5 -0
- data/plugins/ann.rb +47 -0
- data/plugins/autoping.rb +5 -0
- data/plugins/cco.rb +4 -0
- data/plugins/choose.rb +13 -0
- data/plugins/courage.rb +7 -0
- data/plugins/dan.rb +13 -0
- data/plugins/dg.rb +25 -0
- data/plugins/dwiki.rb +6 -0
- data/plugins/eta.rb +43 -0
- data/plugins/g.rb +30 -0
- data/plugins/gc.rb +34 -0
- data/plugins/godfinger.rb +9 -0
- data/plugins/hammerhell.rb +7 -0
- data/plugins/hanase.rb +14 -0
- data/plugins/hellheaven.rb +6 -0
- data/plugins/help.rb +7 -0
- data/plugins/jtime.rb +9 -0
- data/plugins/nai_ja_nai.rb +4 -0
- data/plugins/note.rb +10 -0
- data/plugins/ranking.rb +422 -0
- data/plugins/reload.rb +3 -0
- data/plugins/retard.rb +4 -0
- data/plugins/rs.rb +8 -0
- data/plugins/shiningfinger.rb +9 -0
- data/plugins/shuffle.rb +3 -0
- data/plugins/sugei_inaka.rb +4 -0
- data/plugins/suki_dakara.rb +4 -0
- data/plugins/ts.rb +25 -0
- data/plugins/tsundere.rb +5 -0
- data/plugins/tt.rb +50 -0
- data/plugins/ttt.rb +5 -0
- data/plugins/uptime.rb +20 -0
- data/plugins/wawawa.rb +5 -0
- data/plugins/weather.rb +39 -0
- data/test/helper.rb +18 -0
- data/test/test_meimei.rb +7 -0
- metadata +139 -56
- data/CHANGES +0 -10
- data/LICENSE +0 -31
- data/README +0 -30
- data/lib/meimei/gemspec.rb +0 -45
- data/lib/meimei/specification.rb +0 -128
- data/lib/meimei/version.rb +0 -18
data/plugins/ranking.rb
ADDED
@@ -0,0 +1,422 @@
|
|
1
|
+
define_plugin("!ranking") do |msg|
|
2
|
+
reply "No more rankings until the corporatocracy is overthrown in the United States of America."
|
3
|
+
if false
|
4
|
+
|
5
|
+
blue = "\00311"
|
6
|
+
red = "\00307"
|
7
|
+
normal = "\00316"
|
8
|
+
|
9
|
+
imouto = "sora
|
10
|
+
kirino
|
11
|
+
ui
|
12
|
+
nazuna
|
13
|
+
kotomi
|
14
|
+
satsuki
|
15
|
+
erika
|
16
|
+
mikan
|
17
|
+
kurokoneko
|
18
|
+
miya
|
19
|
+
chika
|
20
|
+
itsuki
|
21
|
+
imouto-san"
|
22
|
+
|
23
|
+
rankers = "evirus
|
24
|
+
albert
|
25
|
+
divine
|
26
|
+
nakar
|
27
|
+
halotron
|
28
|
+
cortana"
|
29
|
+
|
30
|
+
rankings = "anime 2k10
|
31
|
+
music 2k10
|
32
|
+
imouto
|
33
|
+
music 2k9
|
34
|
+
touhou
|
35
|
+
anime 2k11
|
36
|
+
eromanga 2k9
|
37
|
+
eromanga all
|
38
|
+
artists
|
39
|
+
games
|
40
|
+
rankers"
|
41
|
+
|
42
|
+
artists = "naruko hanaharu
|
43
|
+
happoubi jin
|
44
|
+
hijiri rei
|
45
|
+
misaki kurehito
|
46
|
+
kuroya shinobu
|
47
|
+
inoue kiyoshirou
|
48
|
+
nekoi mie
|
49
|
+
sameda koban
|
50
|
+
yamatogawa
|
51
|
+
shiwasu no okina
|
52
|
+
gumma
|
53
|
+
ino
|
54
|
+
nishieda
|
55
|
+
nakajima yuka
|
56
|
+
royal koyonagi
|
57
|
+
ishikei
|
58
|
+
takamichi
|
59
|
+
toshiaki kaneko
|
60
|
+
takemura sesshu
|
61
|
+
cuvie
|
62
|
+
inuburo
|
63
|
+
inazuma
|
64
|
+
bolze
|
65
|
+
inu
|
66
|
+
amano ameno
|
67
|
+
bosshi
|
68
|
+
raita
|
69
|
+
jingrock
|
70
|
+
kizuki aruchu
|
71
|
+
otsuka kotora
|
72
|
+
da hootch
|
73
|
+
sanbun kyouden
|
74
|
+
tsukino jyogi
|
75
|
+
bow ditama"
|
76
|
+
|
77
|
+
music_2010 = "basia bulat - heart of my own
|
78
|
+
zola jesus - stridulum
|
79
|
+
tallest man on earth - wild hunt
|
80
|
+
yeasayer - odd blood
|
81
|
+
beach house - teen dream
|
82
|
+
ra ra riot - the orchard
|
83
|
+
the-dream - love king
|
84
|
+
sound horizon - marchen
|
85
|
+
girl talk - all day
|
86
|
+
first aid kit - big black & the blue
|
87
|
+
band of horses - infinite arms
|
88
|
+
broken social scene - forgiveness rock record
|
89
|
+
das racist - sit down man
|
90
|
+
dessa - badly broken code
|
91
|
+
of montreal - false priest
|
92
|
+
el ten eleven - still like a secret
|
93
|
+
titus andronicus - monitor
|
94
|
+
joanna newsom - have one on me
|
95
|
+
janelle monae - archandroid
|
96
|
+
robyn - body talk
|
97
|
+
drake - thank me later
|
98
|
+
corinne bailey rae - the sea
|
99
|
+
arcade fire - the suburbs
|
100
|
+
black keys - brothers
|
101
|
+
vampire weekend - contra
|
102
|
+
big boi - sir lucious left foot
|
103
|
+
matthew dear - black city
|
104
|
+
holy fuck - latin
|
105
|
+
four tet - there is love
|
106
|
+
ariel pink - before today
|
107
|
+
hot chip - one life stand
|
108
|
+
erykah badu - new amerykah part two
|
109
|
+
twin shadow - forget
|
110
|
+
sade - soldier of love
|
111
|
+
jenny and johnny - i'm having fun now
|
112
|
+
lcd soundsystem - this is happening
|
113
|
+
walkmen - lisbon
|
114
|
+
girls - broken dreams club
|
115
|
+
kid cudi - man on the moon ii
|
116
|
+
rick ross - teflon don
|
117
|
+
spoon - transference
|
118
|
+
abe vigoda - crush
|
119
|
+
midlake - courage of others
|
120
|
+
halcali - tokyo groove
|
121
|
+
fresh and onlys - play it strange
|
122
|
+
delorean - subiza
|
123
|
+
magnetic fields - realism
|
124
|
+
blitzen trapper - destroyer of the void
|
125
|
+
deerhunter - halcyon digest
|
126
|
+
ted leo - brutalist bricks
|
127
|
+
broken bells - broken bells
|
128
|
+
mountain man - made the harbor
|
129
|
+
no age - everything in between
|
130
|
+
emeralds - does it look like i'm here
|
131
|
+
pernice brothers - goodbye killer
|
132
|
+
los campesinos - romance is boring
|
133
|
+
kylesa - spiral shadow
|
134
|
+
miniature tigers - forest
|
135
|
+
antony & the johnsons - swanlights
|
136
|
+
avey tare - down there
|
137
|
+
tyler the creator - bastard
|
138
|
+
belle & sebastian - write about love
|
139
|
+
forest swords - dagger paths
|
140
|
+
teddybears - devil's music
|
141
|
+
new pornographers - together
|
142
|
+
best coast - best coast"
|
143
|
+
|
144
|
+
music_2009 = "neko case - middle cyclone
|
145
|
+
grizzly bear - veckatimest
|
146
|
+
phoenix - wolfgang amadeus mozart
|
147
|
+
avett brothers - i and love and you
|
148
|
+
animal collective - merriweather
|
149
|
+
the xx - xx
|
150
|
+
dj quick & kurupt - blaqkout
|
151
|
+
bear in heaven - beast rest
|
152
|
+
wild beasts - two dancers
|
153
|
+
telekinesis - telekinesis
|
154
|
+
antlers - hospice
|
155
|
+
kid cudi - man on the moon
|
156
|
+
atlas sound - logos
|
157
|
+
data - skywriter
|
158
|
+
raekwon - only built 4 cuban linx pt ii
|
159
|
+
future of the left - travels
|
160
|
+
jj - jj no 2
|
161
|
+
mf doom - born like this
|
162
|
+
clientele - bonfires
|
163
|
+
fever ray - fever ray
|
164
|
+
neon indian - psychic chasms
|
165
|
+
taken by trees - east of eden
|
166
|
+
girls - album
|
167
|
+
place to bury strangers - exploding head
|
168
|
+
mount eerie - wind's poem
|
169
|
+
antony - crying light
|
170
|
+
bill callahan - sometimes i wish
|
171
|
+
dirty projectors - bitte orca
|
172
|
+
camera obscura - my maudlin career
|
173
|
+
yo la tengo - popular songs"
|
174
|
+
|
175
|
+
anime_2011 = "#{blue}level e
|
176
|
+
#{blue}madoka magica
|
177
|
+
#{blue}yumekui merry
|
178
|
+
#{blue}mitsudomoe 2
|
179
|
+
#{blue}fractale
|
180
|
+
#{blue}star driver
|
181
|
+
#{normal}-- MANABI LINE --
|
182
|
+
#{blue}toaru majutsu no index 2
|
183
|
+
#{blue}gosick
|
184
|
+
#{blue}kore wa zombie
|
185
|
+
#{blue}infinite stratos
|
186
|
+
#{blue}cardfight vanguard
|
187
|
+
#{normal}-- FUCKIN DROPPED --
|
188
|
+
#{blue}rio rainbow gate
|
189
|
+
#{blue}oniichan no koto
|
190
|
+
#{blue}freezing
|
191
|
+
#{blue}hourou musuko
|
192
|
+
#{blue}dragon crisis"
|
193
|
+
|
194
|
+
anime_2010 = "k-on!!
|
195
|
+
ore no imouto
|
196
|
+
break blade
|
197
|
+
seitokai yakuin domo
|
198
|
+
seikon no qwaser
|
199
|
+
shinryaku ika musume
|
200
|
+
tatami galaxy
|
201
|
+
baka to test
|
202
|
+
milky holmes
|
203
|
+
yosuga no sora
|
204
|
+
shiki
|
205
|
+
panty & stocking
|
206
|
+
otome youkai zakuro
|
207
|
+
kuragehime*
|
208
|
+
sora no otoshimono forte
|
209
|
+
soredemo machi*
|
210
|
+
star driver
|
211
|
+
strike witches 2
|
212
|
+
shin koihime musou otome tairan
|
213
|
+
amagami ss
|
214
|
+
durarara
|
215
|
+
railgun
|
216
|
+
golgo 13
|
217
|
+
cobra
|
218
|
+
saraiya goyou
|
219
|
+
fortune arterial
|
220
|
+
highschool of the dead
|
221
|
+
hanamaru youchien
|
222
|
+
mitsudomoe
|
223
|
+
asobi ni iku yo
|
224
|
+
sora no woto
|
225
|
+
kuroshitsuji ii
|
226
|
+
toaru majutsu no index ii
|
227
|
+
hidamari sketch 3
|
228
|
+
shukufuku no campanella
|
229
|
+
giant killing
|
230
|
+
working!!
|
231
|
+
katanagatari
|
232
|
+
heartcatch precure
|
233
|
+
bakuman
|
234
|
+
rainbow
|
235
|
+
super robot wars og the inspector
|
236
|
+
arakawa under the bridge
|
237
|
+
b gata h kei
|
238
|
+
ichiban ushiro no daimaou
|
239
|
+
ookami-san to shichinin
|
240
|
+
chu-bra
|
241
|
+
angel beats
|
242
|
+
ladies versus butlers
|
243
|
+
mm!
|
244
|
+
motto toloveru
|
245
|
+
vampire bund
|
246
|
+
densetsu no yuusha
|
247
|
+
heroman
|
248
|
+
ikkitousen xx
|
249
|
+
seikimatsu occult gakuin
|
250
|
+
ookami kakushi"
|
251
|
+
|
252
|
+
touhou = "sanae
|
253
|
+
yukari
|
254
|
+
hisou tensoku
|
255
|
+
yuyuko
|
256
|
+
kanako
|
257
|
+
flandre
|
258
|
+
tenko
|
259
|
+
kaguya
|
260
|
+
eirin
|
261
|
+
patche
|
262
|
+
reisen
|
263
|
+
suika
|
264
|
+
suwako
|
265
|
+
alice
|
266
|
+
sakuya
|
267
|
+
kogasa
|
268
|
+
tewi
|
269
|
+
byakuren
|
270
|
+
reimu
|
271
|
+
nue
|
272
|
+
remilia
|
273
|
+
marisa
|
274
|
+
satori
|
275
|
+
shikieiki
|
276
|
+
koishi
|
277
|
+
daiyousei
|
278
|
+
cirno
|
279
|
+
mokou
|
280
|
+
keine
|
281
|
+
akyu
|
282
|
+
utsuho
|
283
|
+
aya
|
284
|
+
mima
|
285
|
+
star
|
286
|
+
luna
|
287
|
+
sunny
|
288
|
+
momiji
|
289
|
+
yuka
|
290
|
+
meiling
|
291
|
+
iku
|
292
|
+
elly
|
293
|
+
yumeko
|
294
|
+
rumia
|
295
|
+
youmu
|
296
|
+
hina
|
297
|
+
hatate
|
298
|
+
nazrin
|
299
|
+
chiyuri
|
300
|
+
minoriko
|
301
|
+
shizuha
|
302
|
+
yugi
|
303
|
+
yorihime
|
304
|
+
toyohime
|
305
|
+
komachi
|
306
|
+
murasa
|
307
|
+
mystia
|
308
|
+
koakuma
|
309
|
+
nitori
|
310
|
+
orin
|
311
|
+
rinnosuke
|
312
|
+
unzan
|
313
|
+
ran
|
314
|
+
myon
|
315
|
+
yamame
|
316
|
+
wriggle
|
317
|
+
chen
|
318
|
+
medicine
|
319
|
+
shinki
|
320
|
+
rikako
|
321
|
+
lily white
|
322
|
+
reisen ii
|
323
|
+
parsee
|
324
|
+
ichirin
|
325
|
+
lily black
|
326
|
+
letty
|
327
|
+
shou
|
328
|
+
tokiko
|
329
|
+
lunasa
|
330
|
+
merlin
|
331
|
+
lyrica
|
332
|
+
kisume
|
333
|
+
namazu
|
334
|
+
buront"
|
335
|
+
|
336
|
+
eromanga_2009 = "yamatogawa - tayutayu
|
337
|
+
shiwasu no okina - jc ecchi
|
338
|
+
f4u - konya no sikorsky
|
339
|
+
maguro teikoku - island ingyaku no shou
|
340
|
+
arima zin - muchipuri"
|
341
|
+
|
342
|
+
eromanga_all = "yukimi - birthday
|
343
|
+
hanaharu - shoujo material
|
344
|
+
yamatogawa - tayutayu
|
345
|
+
gumma - giri giri sisters
|
346
|
+
maruta - kimi no suki na onnanoko no katachi
|
347
|
+
sameda koban - beastie girls
|
348
|
+
f4u - konya no sikorsky
|
349
|
+
inuburo - inumimi zukan
|
350
|
+
maguro teikoku - island ingyaku no shou
|
351
|
+
nylon - nylon 100%
|
352
|
+
cuvie - hoshigari
|
353
|
+
inu - hatsu inu
|
354
|
+
sekiya asami - your dog
|
355
|
+
koume keito - pollinic girls
|
356
|
+
arima zin - muchipuri"
|
357
|
+
|
358
|
+
case msg
|
359
|
+
when /imouto/
|
360
|
+
s = imouto
|
361
|
+
|
362
|
+
when /anime 2k10/, /anime 2010/
|
363
|
+
s = anime_2010
|
364
|
+
|
365
|
+
when /anime 2k11/, /anime 2011/, /anime/
|
366
|
+
s = anime_2011
|
367
|
+
|
368
|
+
when /touhou/
|
369
|
+
s = touhou
|
370
|
+
|
371
|
+
when /eromanga all/
|
372
|
+
s = eromanga_all
|
373
|
+
|
374
|
+
when /eromanga 2k9/
|
375
|
+
s = eromanga_2009
|
376
|
+
|
377
|
+
when /music 2k10/, /music 2010/
|
378
|
+
s = music_2010
|
379
|
+
|
380
|
+
when /music 2k9/, /music 2009/
|
381
|
+
s = music_2009
|
382
|
+
|
383
|
+
when /rankers/
|
384
|
+
s = rankers
|
385
|
+
|
386
|
+
when /rankings/
|
387
|
+
s = rankings
|
388
|
+
|
389
|
+
when /artists/
|
390
|
+
s = artists
|
391
|
+
|
392
|
+
else
|
393
|
+
s = rankings
|
394
|
+
end
|
395
|
+
|
396
|
+
s = s.split(/\n/)
|
397
|
+
lines = []
|
398
|
+
line = ""
|
399
|
+
|
400
|
+
while true
|
401
|
+
x = s.shift
|
402
|
+
|
403
|
+
if x.nil?
|
404
|
+
lines << line unless line == ""
|
405
|
+
break
|
406
|
+
else
|
407
|
+
line << "#{x} > "
|
408
|
+
if line.size > 400
|
409
|
+
lines << line
|
410
|
+
line = ""
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
415
|
+
lines[-1].gsub!(/ > $/, "")
|
416
|
+
|
417
|
+
lines.each do |l|
|
418
|
+
reply l
|
419
|
+
sleep 1
|
420
|
+
end
|
421
|
+
end
|
422
|
+
end
|
data/plugins/reload.rb
ADDED
data/plugins/retard.rb
ADDED
data/plugins/rs.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
define_plugin("shining finger") do |msg|
|
2
|
+
next unless msg =~ /ore no kono te ga hikatte unaru/i
|
3
|
+
|
4
|
+
reply "Omae o taose to kagayaki sakebu!", false
|
5
|
+
sleep 1
|
6
|
+
reply "HISSATSU!", false
|
7
|
+
sleep 1
|
8
|
+
reply "SHIIIIIINNNIIIIIIIINNNNNGGGGG FIIIIINNNNNGGGAAAAAAAA!!!!!!!", false
|
9
|
+
end
|
data/plugins/shuffle.rb
ADDED
data/plugins/ts.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
define_plugin("!ts") do |msg|
|
6
|
+
Net::HTTP.start("search.twitter.com", 80) do |http|
|
7
|
+
resp = http.get("/search.json?rpp=3&q=" + CGI.escape(msg), {"User-Agent" => "meimei"})
|
8
|
+
|
9
|
+
if resp.content_type == "application/json"
|
10
|
+
results = JSON.parse(resp.body)["results"].map {|x|
|
11
|
+
x["from_user"] + ": " + CGI.unescapeHTML(x["text"])
|
12
|
+
}
|
13
|
+
|
14
|
+
if results.empty?
|
15
|
+
reply "No matches"
|
16
|
+
else
|
17
|
+
results[0, 3].each do |result|
|
18
|
+
reply result
|
19
|
+
end
|
20
|
+
end
|
21
|
+
else
|
22
|
+
reply "Twitter is overloaded"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/plugins/tsundere.rb
ADDED
data/plugins/tt.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
require 'net/http'
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
define_plugin("!tt") do |msg|
|
6
|
+
begin
|
7
|
+
query = msg
|
8
|
+
|
9
|
+
if query =~ /^(anime|hentai|raw|music|manga|drama)/i
|
10
|
+
type = $1.capitalize
|
11
|
+
query = query.gsub(/^\S+ /, "")
|
12
|
+
else
|
13
|
+
type = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
re_query = Regexp.new(Regexp.escape(query).gsub(/\\ /, ".+?"), Regexp::IGNORECASE)
|
17
|
+
cgi_query = query.gsub(/ /, "+")
|
18
|
+
Net::HTTP.start("www.tokyotosho.info", 80) do |http|
|
19
|
+
resp = http.post("/search.php", "terms=#{cgi_query}")
|
20
|
+
results = resp.body[/<table class="listing">(.+?)<\/table>/m, 1]
|
21
|
+
rows = results.scan(/<tr.+?<\/tr>/m)
|
22
|
+
matches = []
|
23
|
+
if rows.any?
|
24
|
+
rows[1..-1].each do |row|
|
25
|
+
if type == nil || row =~ /alt="#{type}"/
|
26
|
+
row =~ /<a rel="nofollow" type="application\/x-bittorrent" href="(.+?)">(.+?)<\/a>/
|
27
|
+
url = CGI.unescapeHTML($1.to_s)
|
28
|
+
desc = $2.to_s
|
29
|
+
|
30
|
+
if desc =~ re_query
|
31
|
+
matches << [desc, url]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
if matches.any?
|
38
|
+
matches[0, 3].each do |m|
|
39
|
+
reply "\00311#{m[0]}: \00307#{m[1]}"
|
40
|
+
end
|
41
|
+
else
|
42
|
+
reply "No matches for #{query}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
rescue Timeout::Error
|
46
|
+
reply "time out"
|
47
|
+
rescue Exception => e
|
48
|
+
reply e.to_s
|
49
|
+
end
|
50
|
+
end
|
data/plugins/ttt.rb
ADDED
data/plugins/uptime.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'net/ssh'
|
3
|
+
|
4
|
+
define_plugin("!uptime") do |msg|
|
5
|
+
sonohara = `uptime`.strip
|
6
|
+
hijiribe = nil
|
7
|
+
dbserver = nil
|
8
|
+
|
9
|
+
Net::SSH.start("hijiribe", "albert") do |ssh|
|
10
|
+
hijiribe = ssh.exec!("uptime").strip
|
11
|
+
end
|
12
|
+
|
13
|
+
Net::SSH.start("dbserver", "albert") do |ssh|
|
14
|
+
dbserver = ssh.exec!("uptime").strip
|
15
|
+
end
|
16
|
+
|
17
|
+
reply "sonohara: #{sonohara}"
|
18
|
+
reply "hijiribe: #{hijiribe}"
|
19
|
+
reply "dbserver: #{dbserver}"
|
20
|
+
end
|
data/plugins/wawawa.rb
ADDED
data/plugins/weather.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
define_plugin("!weather") do |msg|
|
2
|
+
query = msg
|
3
|
+
|
4
|
+
if query.any?
|
5
|
+
begin
|
6
|
+
Net::HTTP.start("www.google.com", 80) do |http|
|
7
|
+
resp = http.get("/search?num=1&q=weather+for+" + URI.escape(query, /[^a-zA-Z0-9]/))
|
8
|
+
if resp.body =~ /<table class="ts std">.+?<b>Weather<\/b> for <b>(.+?)<\/b>/m
|
9
|
+
|
10
|
+
result = "Weather for " + $1 + ": "
|
11
|
+
|
12
|
+
if resp.body =~ />Current: <b>(.+?)</m
|
13
|
+
result = result + $1 + ", "
|
14
|
+
end
|
15
|
+
|
16
|
+
if resp.body =~ /<div style="font-size:140%"><b>(.+?)<\/b>/m
|
17
|
+
result = result + $1 + ", "
|
18
|
+
end
|
19
|
+
|
20
|
+
if resp.body =~ />(Wind: .+?)</m
|
21
|
+
result = result + $1 + ", "
|
22
|
+
end
|
23
|
+
|
24
|
+
if resp.body =~ />(Humidity: .+?)</m
|
25
|
+
result = result + $1
|
26
|
+
end
|
27
|
+
|
28
|
+
reply result
|
29
|
+
else
|
30
|
+
reply "Google doesn't seem to know"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
rescue Timeout
|
34
|
+
reply "timeout"
|
35
|
+
rescue Exception => e
|
36
|
+
reply e.to_s
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'meimei'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|