From: Giuseppe Bilotta Date: Sun, 8 Feb 2009 13:34:52 +0000 (+0100) Subject: grouphug: fix retrieval of spurious confessions X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=3dc53f61fcb7fae58c2259bc88d2a884e74b9331;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git grouphug: fix retrieval of spurious confessions The real confessions are in the 'main' div, so rather than second-guessing their true location (and getting it wrong every time the site changes layout), just skip to the 'main' div before looking for content. --- diff --git a/data/rbot/plugins/grouphug.rb b/data/rbot/plugins/grouphug.rb index 5a1890a2..45083e1c 100644 --- a/data/rbot/plugins/grouphug.rb +++ b/data/rbot/plugins/grouphug.rb @@ -10,6 +10,7 @@ # License:: GPL v2 class GrouphugPlugin < Plugin + START = '
\s*

(.*?)

\s+
', Regexp::MULTILINE) REGPOST = Regexp.new('title>(.*?) \| Group Hug') def initialize @@ -55,15 +56,16 @@ class GrouphugPlugin < Plugin path = "confessions/#{params[:num]}" opts.delete(:cache) data = @bot.httputil.get("http://grouphug.us/#{path}", opts) - - res = data.scan(REG) - confession = res[2][0].ircify_html # use res[2] to skip the new sidebar "Group Hug is run by one person..." and other text. + start = data.index(START) + res = data[start, data.length - start].scan(REG) + confession = res.first[0].ircify_html confession = "no confession ##{params[:num]} found" if confession.empty? and params[:num] m.reply confession else # Cache random confessions if @confessions.empty? data = @bot.httputil.get("http://grouphug.us/#{path}", opts) - res = data.scan(REG) + start = data.index(START) + res = data[start, data.length - start].scan(REG) res.each do |quote| @confessions << quote[0].ircify_html end