From 7c3bc67c86582d7cd05b565e30d432a060f2dc73 Mon Sep 17 00:00:00 2001 From: Daniel Folkinshteyn Date: Sun, 25 Apr 2010 00:34:31 -0400 Subject: [PATCH] Add some sanity checks to RSS plugin: First: if an rss feed is called without the number of headlines argument, we now have a default number of items it will output. before, it tried to stuff the whole rss feed into the channel, which is quite floody, if more than one 'mores' is set, or if oneToOne is false. Second: when adding a new feed to announce, it again, tried to stuff the whole rss feed into the channel, which ran into the same floody conditions as above. now we have a default number of feeds to output when there's no cached history. --- plugins/RSS/config.py | 6 ++++++ plugins/RSS/plugin.py | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/plugins/RSS/config.py b/plugins/RSS/config.py index e4754375b..7029f5448 100644 --- a/plugins/RSS/config.py +++ b/plugins/RSS/config.py @@ -72,6 +72,12 @@ conf.registerChannelValue(RSS, 'showLinks', along with the title of the feed when the rss command is called. supybot.plugins.RSS.announce.showLinks affects whether links will be listed when a feed is automatically announced."""))) +conf.registerGlobalValue(RSS, 'defaultNumberOfHeadlines', + registry.PositiveInteger(1, """Indicates how many headlines an rss feed + will output by default, if no number is provided.""")) +conf.registerChannelValue(RSS, 'initialAnnounceHeadlines', + registry.PositiveInteger(5, """Indicates how many headlines an rss feed + will output when it is first added to announce for a channel.""")) conf.registerGroup(RSS, 'announce') conf.registerChannelValue(RSS.announce, 'showLinks', diff --git a/plugins/RSS/plugin.py b/plugins/RSS/plugin.py index eb0c7af11..e11e23dbb 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -185,6 +185,8 @@ class RSS(callbacks.Plugin): newheadlines = filter(None, newheadlines) # Removes Nones. if newheadlines: for channel in channels: + if len(oldheadlines) == 0: + newheadlines = newheadlines[:self.registryValue('initialAnnounceHeadlines', channel)] bold = self.registryValue('bold', channel) sep = self.registryValue('headlineSeparator', channel) prefix = self.registryValue('announcementPrefix', channel) @@ -405,6 +407,8 @@ class RSS(callbacks.Plugin): headlines = self.buildHeadlines(headlines, channel, 'showLinks') if n: headlines = headlines[:n] + else: + headlines = headlines[:self.registryValue('defaultNumberOfHeadlines')] sep = self.registryValue('headlineSeparator', channel) if self.registryValue('bold', channel): sep = ircutils.bold(sep)