X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Furban.rb;h=0c7d98387cf8a10b466a7de1a95c172f02b2c01f;hb=3f8710a19b6989cd1c67629a92fd992968579456;hp=36c390777509f66e47027e05ebbfe4ed84806b0e;hpb=c7146d39eede9d1f439bda48117b4dc194ce120e;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git
diff --git a/data/rbot/plugins/urban.rb b/data/rbot/plugins/urban.rb
index 36c39077..0c7d9838 100644
--- a/data/rbot/plugins/urban.rb
+++ b/data/rbot/plugins/urban.rb
@@ -1,5 +1,3 @@
-require 'uri'
-
class UrbanPlugin < Plugin
def help( plugin, topic="")
@@ -11,13 +9,15 @@ class UrbanPlugin < Plugin
n = params[:n].nil? ? 1 : params[:n].to_i rescue 1
if words.empty?
- uri = URI.parse( "http://www.urbandictionary.com/random.php" )
- @bot.httputil.head(uri) { |redir|
- words = URI.unescape(redir.match(/define.php\?term=(.*)$/)[1]) rescue nil
- }
+ resp = @bot.httputil.head('http://www.urbandictionary.com/random.php',
+ :max_redir => -1,
+ :cache => false)
+ if resp.code == "302" && (loc = resp['location'])
+ words = URI.unescape(loc.match(/define.php\?term=(.*)$/)[1]) rescue nil
+ end
end
# we give a very high 'skip' because this will allow us to get the number of definitions by retrieving the previous definition
- uri = URI.parse("http://www.urbanwap.com/search.php?term=#{URI.escape words}&skip=65536")
+ uri = "http://www.urbanwap.com/search.php?term=#{CGI.escape words}&skip=65536"
page = @bot.httputil.get(uri)
if page.nil?
m.reply "Couldn't retrieve an urban dictionary definition of #{words}"
@@ -38,7 +38,7 @@ class UrbanPlugin < Plugin
n = numdefs
end
if n < numdefs
- uri = URI.parse("http://www.urbanwap.com/search.php?term=#{URI.escape words}&skip=#{n-1}")
+ uri = "http://www.urbanwap.com/search.php?term=#{CGI.escape words}&skip=#{n-1}"
page = @bot.httputil.get(uri)
if page.nil?
case n % 10
@@ -59,7 +59,21 @@ class UrbanPlugin < Plugin
end
def get_def(text)
- Utils.decode_html_entities text.gsub(/(?:prev<\/a> )?home<\/a>(?: next<\/a>)?/,'').gsub(/<\/?p>/, ' ').gsub(/<.*?>/, '').gsub("\n", ' ').strip
+ # Start by removing the prev/home/next links
+ t = text.gsub(/(?:]*>prev<\/a> )?]*>home<\/a>(?: ]*>next<\/a>)?/,'')
+ # Close up paragraphs
+ t.gsub!(/<\/?p>/, ' ')
+ t.gsub!("\n", ' ')
+ # Reverse headings
+ t.gsub!(/<\/?b>/,"#{Reverse}")
+ # Enbolden links
+ t.gsub!(/<\/?a(?: [^>]*)?>/,"#{Bold}")
+ # Reverse examples
+ t.gsub!(/<\/?(?:i|em)>/,"#{Underline}")
+ # Clear anything else
+ t.gsub!(/<.*?>/, '')
+
+ Utils.decode_html_entities t.strip
end
def uotd(m, params)