- if m.params
- paramArray = m.params.split(' ')
- if paramArray.last.to_i != 0
- definitionN = paramArray.last.to_i - 1
- query = m.params.chomp( paramArray.last )
- query.rstrip!
- else
- query = m.params
- end
- uri = URI.parse( "http://www.urbandictionary.com/define.php?term=#{ URI.escape query}" )
- else
- uri = URI.parse( "http://www.urbandictionary.com/random.php" )
+ def get_def(m, word, n = nil)
+ n = n ? n.to_i : 1
+ u = URBAN + URI.escape(word)
+ u += '&skip=' + n.to_s if n
+ s = @bot.httputil.get(u)
+
+ notfound = s.match %r{<div style="color: #669FCE"><i>.*?</i> isn't defined}
+
+ total = nil
+ if s.sub!(%r{<div class="pager"><b>(\d+)</b>\s*definition.*$}m, '')
+ total = $1.to_i
+ end
+
+ rv = Array.new
+
+ s.scan(%r{<td class="def_number"[^>]*>(\d+)\.</td>.*?<td class="def_word">(?:<a.*?>)?([^>]+)(?:</a>)?</td>.*?<div class="def_p">.*?<p>(.+?)</p>.*?<p style=".*?>(.+?)</p>}m) do |num, wrd, desc, ex|
+ rv << [num.to_i, wrd, desc, ex]