]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/rss.rb
rss plugin: user ircify_html
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / rss.rb
index 5873c496a15f5a034893fb099da88c5567125635..5cd1ada3714a272766545acae007e40fbd751567 100644 (file)
@@ -246,6 +246,8 @@ class RSSFeedsPlugin < Plugin
     end\r
   end\r
 \r
+  attr_reader :feeds\r
+\r
   def initialize\r
     super\r
     if @registry.has_key?(:feeds)\r
@@ -397,7 +399,7 @@ class RSSFeedsPlugin < Plugin
 \r
     m.reply "lemme fetch it..."\r
     title = items = nil\r
-    fetched = fetchRss(feed, m)\r
+    fetched = fetchRss(feed, m, false)\r
     return unless fetched or feed.xml\r
     if not fetched and feed.items\r
       m.reply "using old data"\r
@@ -641,16 +643,18 @@ class RSSFeedsPlugin < Plugin
     end\r
     status = Hash.new\r
     status[:failures] = 0\r
+    status[:first_run] = true\r
     @watch[feed.handle] = @bot.timer.add(0, status) {\r
       debug "watcher for #{feed} started"\r
       failures = status[:failures]\r
+      first_run = status.delete(:first_run)\r
       begin\r
         debug "fetching #{feed}"\r
         oldxml = feed.xml ? feed.xml.dup : nil\r
         unless fetchRss(feed)\r
           failures += 1\r
         else\r
-          if oldxml and oldxml == feed.xml\r
+          if first_run or (oldxml and oldxml == feed.xml)\r
             debug "xml for #{feed} didn't change"\r
             failures -= 1 if failures > 0\r
           else\r
@@ -727,9 +731,9 @@ class RSSFeedsPlugin < Plugin
       end\r
     end\r
 \r
-    title = "#{Bold}#{item.title.chomp.riphtml}#{Bold}" if item.title\r
+    title = "#{Bold}#{item.title.ircify_html}#{Bold}" if item.title\r
 \r
-    desc = item.description.gsub(/\s+/,' ').strip.riphtml if item.description\r
+    desc = item.description.ircify_html if item.description\r
 \r
     link = item.link.chomp if item.link\r
 \r
@@ -772,12 +776,13 @@ class RSSFeedsPlugin < Plugin
     }\r
   end\r
 \r
-  def fetchRss(feed, m=nil)\r
+  def fetchRss(feed, m=nil, cache=true)\r
     begin\r
       # Use 60 sec timeout, cause the default is too low\r
       xml = @bot.httputil.get(feed.url,\r
                               :read_timeout => 60,\r
-                              :open_timeout => 60)\r
+                              :open_timeout => 60,\r
+                              :cache => cache)\r
     rescue URI::InvalidURIError, URI::BadURIError => e\r
       report_problem("invalid rss feed #{feed.url}", e, m)\r
       return nil\r