end\r
end\r
\r
+ attr_reader :feeds\r
+\r
def initialize\r
super\r
if @registry.has_key?(:feeds)\r
\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
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
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
}\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