Added a <number of headlines> argument to feed commands.

This commit is contained in:
Jeremy Fincher 2004-04-19 19:24:52 +00:00
parent 850fdf26a8
commit eee1f7cee2
1 changed files with 15 additions and 6 deletions

View File

@ -227,11 +227,13 @@ class RSS(callbacks.Privmsg):
return [utils.htmlToText(d['title'].strip()) for d in feed['items']] return [utils.htmlToText(d['title'].strip()) for d in feed['items']]
def makeFeedCommand(self, name, url): def makeFeedCommand(self, name, url):
docstring = """takes no arguments docstring = """<number of headlines>
Reports the titles for %s at the RSS feed <%s>. RSS feeds are only Reports the titles for %s at the RSS feed <%s>. If
looked up every supybot.plugins.RSS.waitPeriod seconds, which defaults <number of headlines> is given, returns only that many headlines.
to 1800 (30 minutes) since that's what most websites prefer. RSS feeds are only looked up every supybot.plugins.RSS.waitPeriod
seconds, which defaults to 1800 (30 minutes) since that's what most
websites prefer.
""" % (name, url) """ % (name, url)
name = callbacks.canonicalName(name) name = callbacks.canonicalName(name)
if url not in self.locks: if url not in self.locks:
@ -288,11 +290,12 @@ class RSS(callbacks.Privmsg):
announce = privmsgs.checkChannelCapability(announce, 'op') announce = privmsgs.checkChannelCapability(announce, 'op')
def rss(self, irc, msg, args): def rss(self, irc, msg, args):
"""<url> """<url> [<number of headlines>]
Gets the title components of the given RSS feed. Gets the title components of the given RSS feed.
If <number of headlines> is given, return only that many headlines.
""" """
url = privmsgs.getArgs(args) (url, n) = privmsgs.getArgs(args, optional=1)
self.log.debug('Fetching %s', url) self.log.debug('Fetching %s', url)
feed = self.getFeed(url) feed = self.getFeed(url)
if ircutils.isChannel(msg.args[0]): if ircutils.isChannel(msg.args[0]):
@ -303,6 +306,12 @@ class RSS(callbacks.Privmsg):
if not headlines: if not headlines:
irc.error('Couldn\'t get RSS feed') irc.error('Couldn\'t get RSS feed')
return return
if n:
try:
n = int(n)
except ValueError:
raise callbacks.Error
headlines = headlines[:n]
headlines = imap(utils.htmlToText, headlines) headlines = imap(utils.htmlToText, headlines)
sep = self.registryValue('headlineSeparator', channel) sep = self.registryValue('headlineSeparator', channel)
irc.reply(sep.join(headlines)) irc.reply(sep.join(headlines))