meimei 0.4.1 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a0f3088857a15a27e46e3247ee18469011626cf
4
- data.tar.gz: 403a278f19f0db750fb4c5db420140011e2fc2bd
3
+ metadata.gz: fc878b66e5e93460cc7cd57452731f5ba8316744
4
+ data.tar.gz: c537ed11cf862d8ddfedc7e5d627c07f063aaad9
5
5
  SHA512:
6
- metadata.gz: 65ba2aa536f6ec2636e843583c84163d1258e302e22c9508a316710d649bbbd75a0d27a7a25d23eeeddcce12690ae44f430b3b8dca6408d648a361f1459876de
7
- data.tar.gz: bb872becb85c745f8a65412d952f1d734cadfa3451a209e59379405336e7afb2e06262429dd58120cd0d0d8105eaccf66e397e4469c10f953284542efac7a8ec
6
+ metadata.gz: 146ff41a9820a2477e6b75fe4885d443ba7ad0b70fb565d91031fc63df23cacafc05cf0a5ba4b2b5aef9aa297f4897e6551be43e763f465aa5fb89f646939692
7
+ data.tar.gz: 3725e2c4a3624596dbd97099c510a604d59987b6f52fb5c1ea3419a59e5aa4f6db2e011e18a9309d11eabd8dc6ea4b63e3559291e26f91cebc5096a4479d1b89
data/Gemfile CHANGED
@@ -7,3 +7,4 @@ gem 'nokogiri'
7
7
  gem 'json'
8
8
  gem 'damerau-levenshtein'
9
9
  gem 'time_difference'
10
+ gem 'pry'
data/Gemfile.lock CHANGED
@@ -9,6 +9,7 @@ GEM
9
9
  tzinfo (~> 1.1)
10
10
  addressable (2.3.8)
11
11
  builder (3.2.2)
12
+ coderay (1.1.0)
12
13
  damerau-levenshtein (1.1.0)
13
14
  bundler (~> 1.7)
14
15
  json (~> 1.8)
@@ -41,6 +42,7 @@ GEM
41
42
  rdoc
42
43
  json (1.8.2)
43
44
  jwt (1.5.0)
45
+ method_source (0.8.2)
44
46
  mini_portile (0.6.2)
45
47
  minitest (5.7.0)
46
48
  multi_json (1.11.0)
@@ -54,12 +56,17 @@ GEM
54
56
  multi_json (~> 1.3)
55
57
  multi_xml (~> 0.5)
56
58
  rack (~> 1.2)
59
+ pry (0.10.1)
60
+ coderay (~> 1.1.0)
61
+ method_source (~> 0.8.1)
62
+ slop (~> 3.4)
57
63
  rack (1.6.1)
58
64
  rake (10.4.2)
59
65
  rake-compiler (0.9.5)
60
66
  rake
61
67
  rdoc (4.2.0)
62
68
  json (~> 1.4)
69
+ slop (3.6.0)
63
70
  thread_safe (0.3.5)
64
71
  time_difference (0.4.2)
65
72
  activesupport
@@ -74,6 +81,7 @@ DEPENDENCIES
74
81
  jeweler
75
82
  json
76
83
  nokogiri
84
+ pry
77
85
  rake
78
86
  rdoc
79
87
  time_difference
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
data/meimei.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "meimei"
8
- s.version = "0.4.1"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["r888888888"]
12
- s.date = "2015-06-02"
12
+ s.date = "2015-09-21"
13
13
  s.description = "If all you need is a simple infobot and don't need a full RFC1459 implementation."
14
14
  s.email = "r888888888@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
40
40
  "plugins/courage.rb",
41
41
  "plugins/dan.rb",
42
42
  "plugins/dg.rb",
43
+ "plugins/domo.rb",
43
44
  "plugins/dwiki.rb",
44
45
  "plugins/eta.rb",
45
46
  "plugins/g.rb",
@@ -67,6 +68,7 @@ Gem::Specification.new do |s|
67
68
  "plugins/uptime.rb",
68
69
  "plugins/wawawa.rb",
69
70
  "plugins/weather.rb",
71
+ "plugins/yeeart.rb",
70
72
  "test/helper.rb",
71
73
  "test/test_meimei.rb"
72
74
  ]
@@ -87,6 +89,7 @@ Gem::Specification.new do |s|
87
89
  s.add_runtime_dependency(%q<json>, [">= 0"])
88
90
  s.add_runtime_dependency(%q<damerau-levenshtein>, [">= 0"])
89
91
  s.add_runtime_dependency(%q<time_difference>, [">= 0"])
92
+ s.add_runtime_dependency(%q<pry>, [">= 0"])
90
93
  else
91
94
  s.add_dependency(%q<jeweler>, [">= 0"])
92
95
  s.add_dependency(%q<rake>, [">= 0"])
@@ -95,6 +98,7 @@ Gem::Specification.new do |s|
95
98
  s.add_dependency(%q<json>, [">= 0"])
96
99
  s.add_dependency(%q<damerau-levenshtein>, [">= 0"])
97
100
  s.add_dependency(%q<time_difference>, [">= 0"])
101
+ s.add_dependency(%q<pry>, [">= 0"])
98
102
  end
99
103
  else
100
104
  s.add_dependency(%q<jeweler>, [">= 0"])
@@ -104,6 +108,7 @@ Gem::Specification.new do |s|
104
108
  s.add_dependency(%q<json>, [">= 0"])
105
109
  s.add_dependency(%q<damerau-levenshtein>, [">= 0"])
106
110
  s.add_dependency(%q<time_difference>, [">= 0"])
111
+ s.add_dependency(%q<pry>, [">= 0"])
107
112
  end
108
113
  end
109
114
 
data/plugins/domo.rb ADDED
@@ -0,0 +1,13 @@
1
+ define_plugin("domo") do |msg|
2
+ next unless msg =~ /\bdou?mo\b/i and msg =~ /\bdesu\b/i
3
+
4
+ if msg =~ /hajimemashite/i
5
+ reply "DOMO. HAJIMEMASHITE. MEIMEI DESU.", false
6
+ elsif msg =~ /meimei-san[.!]?\s+(.+?)\s+desu/i
7
+ reply "DOMO #{$1.upcase.strip}-SAN. MEIMEI DESU.", false
8
+ elsif msg =~ /dou?mo[.!]?\s+(.+?)\s+desu/i
9
+ reply "DOMO #{$1.upcase.strip}-SAN. MEIMEI DESU.", false
10
+ elsif msg =~ /meimei-san/i
11
+ reply "DOMO #{@current_from.upcase}-SAN. MEIMEI DESU.", false
12
+ end
13
+ end
data/plugins/eta.rb CHANGED
@@ -39,6 +39,8 @@ define_plugin("!eta") do |msg|
39
39
  distance_s = "#{distance[:days]}d #{distance[:hours]}h #{distance[:minutes]}m"
40
40
 
41
41
  reply "ETA for #{anime} (ep #{episode}): #{distance_s}"
42
+ else
43
+ reply "No matches found"
42
44
  end
43
45
  end
44
46
  end
data/plugins/g.rb CHANGED
@@ -9,16 +9,15 @@ require "cgi"
9
9
 
10
10
  define_plugin("!g") do |msg|
11
11
  query = msg
12
+ api_key = "AIzaSyBbqMEONSx_cqrBhk0GXNbzZw_E3bNgNwQ"
12
13
 
13
- if query.any?
14
+ if query =~ /\S/
14
15
  begin
15
- Net::HTTP.start("ajax.googleapis.com", 80) do |http|
16
- resp = http.get("/ajax/services/search/web?v=1.0&q=" + URI.escape(query, /./))
16
+ Net::HTTP.start("www.googleapis.com", 443, :use_ssl => true) do |http|
17
+ resp = http.get("/customsearch/v1?cx=003806434433967703265:eltrj5arw88&key=#{api_key}&q=" + URI.escape(query, /./))
17
18
  json = JSON.parse(resp.body)
18
- answers = json["responseData"]["results"].map {|x| "\00311" + CGI.unescapeHTML(x["titleNoFormatting"]) + " \00307" + URI.unescape(x["url"])}
19
- answers.each do |answer|
20
- reply answer
21
- end
19
+ answer = json["items"][0]
20
+ reply "#{answer['title']} -> #{answer['link']}"
22
21
  end
23
22
  rescue Timeout
24
23
  reply "timeout"
data/plugins/gc.rb CHANGED
@@ -6,26 +6,51 @@ require "uri"
6
6
  require "json"
7
7
  require "timeout"
8
8
  require "cgi"
9
+ require "nokogiri"
10
+ require "pry"
9
11
 
10
12
  define_plugin("!gc") do |msg|
11
13
  app = "meimei"
12
14
  app_id = "WQJUTR-EXQT7VL45T"
13
- url = URI.parse("http://api.wolframalpha.com/v2/query?input=#{CGI.escape(msg)}&appid=#{app_id}&format=plaintext&includepodid=Result")
15
+ assumption = nil
16
+
17
+ if msg =~ /\bassume (\S+)/
18
+ assumption = $1
19
+ msg = msg.sub(/\bassume \S+/, "").strip
20
+ end
21
+
22
+ url = URI.parse("http://api.wolframalpha.com/v2/query?input=#{CGI.escape(msg)}&appid=#{app_id}&format=plaintext&excludepodid=Input&assumption=#{assumption}")
14
23
 
15
24
  begin
16
25
  Net::HTTP.start(url.host, url.port) do |http|
17
26
  resp = http.get(url.request_uri).body
27
+ doc = Nokogiri::XML(resp)
28
+ answers = []
29
+
30
+ doc.css("pod[error='false'] plaintext").each do |plaintext|
31
+ answers << plaintext.inner_html.strip
32
+ end
18
33
 
19
- if resp =~ /queryresult success='false'/
20
- reply "Wolfram Alpha errored out"
21
- elsif resp =~ /<plaintext>(.+?)<\/plaintext>/m
22
- answer = $1.strip
23
- answer = answer[0, 200]
24
- reply "#{msg} -> #{answer}"
34
+ answers.reject! {|x| x.empty?}
35
+
36
+ if answers.any?
37
+ answer_text = answers.first.slice(0, 450)
38
+ reply "#{msg} -> #{answer_text}"
25
39
  else
26
- reply "Wolfram Alpha doesn't seem to know"
40
+ reply "I don't know"
27
41
  end
28
42
  end
43
+
44
+ if answers.empty?
45
+ if assumption.nil? && doc.css("assumption").any?
46
+ descs = doc.css("assumption value").map {|x| "#{msg} assume #{x.attr('input')}"}
47
+ reply "try also: " + descs.join(", ").slice(0, 450)
48
+ elsif doc.css("didyoumean").any?
49
+ descs = doc.css("didyoumean").map {|x| x.inner_html.strip}
50
+ reply "did you mean: " + descs.join(", ").slice(0, 450)
51
+ end
52
+ end
53
+
29
54
  rescue Timeout
30
55
  reply "timeout"
31
56
  rescue Exception => e
data/plugins/reload.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  define_plugin("!reload") do |msg|
2
2
  load_plugins()
3
+ reply "Plugins reloaded", false
3
4
  end
data/plugins/weather.rb CHANGED
@@ -1,39 +1,40 @@
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 + ": "
1
+ require 'net/http'
2
+ require 'json'
11
3
 
12
- if resp.body =~ />Current: <b>(.+?)</m
13
- result = result + $1 + ", "
14
- end
4
+ define_plugin("!w") do |msg|
5
+ api_key = "37f18195cbd147d0"
6
+ query = msg
15
7
 
16
- if resp.body =~ /<div style="font-size:140%"><b>(.+?)<\/b>/m
17
- result = result + $1 + ", "
18
- end
8
+ begin
9
+ Net::HTTP.start("api.wunderground.com", 80) do |http|
10
+ param = nil
19
11
 
20
- if resp.body =~ />(Wind: .+?)</m
21
- result = result + $1 + ", "
22
- end
12
+ if msg =~ /^\d+$/
13
+ param = "#{msg}"
14
+ elsif msg =~ /,/
15
+ city, country = msg.split(/,/)
16
+ param = "#{country.strip}/#{city.strip}".gsub(" ", "_")
17
+ else
18
+ param = msg.gsub(" ", "_")
19
+ end
23
20
 
24
- if resp.body =~ />(Humidity: .+?)</m
25
- result = result + $1
26
- end
21
+ resp = http.get("/api/#{api_key}/conditions/q/#{param}.json")
22
+ json = JSON.parse(resp.body)
27
23
 
28
- reply result
29
- else
30
- reply "Google doesn't seem to know"
31
- end
24
+ if json["current_observation"].nil?
25
+ reply "Unknown location. Usage: !w [us zip code | city, state | city, country]"
26
+ else
27
+ location = json["current_observation"]["display_location"]["full"]
28
+ temperature = json["current_observation"]["temperature_string"]
29
+ weather = json["current_observation"]["weather"]
30
+ humidty = json["current_observation"]["relative_humidity"]
31
+ response = "#{location}: #{temperature} - #{weather} - #{humidty} Humidity"
32
+ reply response
32
33
  end
33
- rescue Timeout
34
- reply "timeout"
35
- rescue Exception => e
36
- reply e.to_s
37
34
  end
35
+ rescue Timeout
36
+ reply "timeout"
37
+ rescue Exception => e
38
+ reply e.to_s
38
39
  end
39
40
  end
data/plugins/yeeart.rb ADDED
@@ -0,0 +1,10 @@
1
+ define_plugin("yeeart") do |msg|
2
+ next unless msg =~ /\b(y+)(ee+)(a+)(r+)(t+)\b/i
3
+ ys = [$1.size, 50].min
4
+ es = [$2.size, 300].min
5
+ as = [$3.size, 50].min
6
+ rs = [$4.size, 50].min
7
+ ts = [$5.size, 50].min
8
+ resp = ("Y" * (ys + 1)) + ("E" * (es + 1)) + ("A" * (as + 1)) + ("R" * (rs + 1)) + ("T" * (ts + 1)) + "!"
9
+ reply resp
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meimei
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - r888888888
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-02 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeweler
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: If all you need is a simple infobot and don't need a full RFC1459 implementation.
112
126
  email: r888888888@gmail.com
113
127
  executables: []
@@ -139,6 +153,7 @@ files:
139
153
  - plugins/courage.rb
140
154
  - plugins/dan.rb
141
155
  - plugins/dg.rb
156
+ - plugins/domo.rb
142
157
  - plugins/dwiki.rb
143
158
  - plugins/eta.rb
144
159
  - plugins/g.rb
@@ -166,6 +181,7 @@ files:
166
181
  - plugins/uptime.rb
167
182
  - plugins/wawawa.rb
168
183
  - plugins/weather.rb
184
+ - plugins/yeeart.rb
169
185
  - test/helper.rb
170
186
  - test/test_meimei.rb
171
187
  homepage: http://github.com/r888888888/meimei