meimei 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|