From 55eeb4a57bb449d7cde0e78c893ac321e7de13a2 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 | 7 +++++++ plugins/RSS/plugin.py | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/plugins/RSS/config.py b/plugins/RSS/config.py index f36e9dc4b..1027a462d 100644 --- a/plugins/RSS/config.py +++ b/plugins/RSS/config.py @@ -70,6 +70,13 @@ 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 9f5a4d591..6baf7498f 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -183,6 +183,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) @@ -392,6 +394,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)