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.
This commit is contained in:
Daniel Folkinshteyn 2010-04-25 00:34:31 -04:00 committed by Valentin Lorentz
parent 7505f839fc
commit 7c3bc67c86
2 changed files with 10 additions and 0 deletions

View File

@ -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',

View File

@ -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)