mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-02-17 06:00:42 +01:00
RSS: Make feed commands work.
This commit is contained in:
parent
219c47d1c8
commit
0a6a4991a5
@ -59,6 +59,10 @@ class Feed:
|
|||||||
__slots__ = ('url', 'name', 'data', 'last_update', 'entries',
|
__slots__ = ('url', 'name', 'data', 'last_update', 'entries',
|
||||||
'lock', 'announced_entries')
|
'lock', 'announced_entries')
|
||||||
def __init__(self, name, url, plugin_is_loading=False):
|
def __init__(self, name, url, plugin_is_loading=False):
|
||||||
|
assert name, name
|
||||||
|
if not url:
|
||||||
|
assert utils.web.httpUrlRe.match(name), name
|
||||||
|
url = name
|
||||||
self.name = name
|
self.name = name
|
||||||
self.url = url
|
self.url = url
|
||||||
self.data = None
|
self.data = None
|
||||||
@ -69,8 +73,7 @@ class Feed:
|
|||||||
self.lock = threading.Thread()
|
self.lock = threading.Thread()
|
||||||
self.announced_entries = utils.structures.TruncatableSet()
|
self.announced_entries = utils.structures.TruncatableSet()
|
||||||
|
|
||||||
@property
|
def get_command(self, plugin):
|
||||||
def command(self):
|
|
||||||
docstring = format(_("""[<number of headlines>]
|
docstring = format(_("""[<number of headlines>]
|
||||||
|
|
||||||
Reports the titles for %s at the RSS feed %u. If
|
Reports the titles for %s at the RSS feed %u. If
|
||||||
@ -78,14 +81,11 @@ class Feed:
|
|||||||
RSS feeds are only looked up every supybot.plugins.RSS.waitPeriod
|
RSS feeds are only looked up every supybot.plugins.RSS.waitPeriod
|
||||||
seconds, which defaults to 1800 (30 minutes) since that's what most
|
seconds, which defaults to 1800 (30 minutes) since that's what most
|
||||||
websites prefer."""), self.name, self.url)
|
websites prefer."""), self.name, self.url)
|
||||||
if self.isCommandMethod(name):
|
def f(self2, irc, msg, args):
|
||||||
s = format('I already have a command in this plugin named %s.',name)
|
args.insert(0, self.url)
|
||||||
raise callbacks.Error(s)
|
self2.rss(irc, msg, args)
|
||||||
def f(self, irc, msg, args):
|
f = utils.python.changeFunctionName(f, self.name, docstring)
|
||||||
args.insert(0, url)
|
f = types.MethodType(f, plugin)
|
||||||
self.rss(irc, msg, args)
|
|
||||||
f = utils.python.changeFunctionName(f, name, docstring)
|
|
||||||
f = types.MethodType(f, self)
|
|
||||||
return f
|
return f
|
||||||
|
|
||||||
def lock_feed(f):
|
def lock_feed(f):
|
||||||
@ -130,8 +130,7 @@ class RSS(callbacks.Plugin):
|
|||||||
except registry.NonExistentRegistryEntry:
|
except registry.NonExistentRegistryEntry:
|
||||||
self.log.warning('%s is not a registered feed, removing.',name)
|
self.log.warning('%s is not a registered feed, removing.',name)
|
||||||
continue
|
continue
|
||||||
self.feed_names[name] = url
|
self.register_feed(name, url, True)
|
||||||
self.feeds[url] = Feed(name, url, True)
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Feed registering
|
# Feed registering
|
||||||
@ -141,6 +140,13 @@ class RSS(callbacks.Plugin):
|
|||||||
group = self.registryValue('feeds', value=False)
|
group = self.registryValue('feeds', value=False)
|
||||||
conf.registerGlobalValue(group, name, registry.String(url, ''))
|
conf.registerGlobalValue(group, name, registry.String(url, ''))
|
||||||
|
|
||||||
|
def register_feed(self, name, url, plugin_is_loading):
|
||||||
|
self.feed_names[name] = url
|
||||||
|
if self.isCommandMethod(name):
|
||||||
|
s = format('I already have a command in this plugin named %s.',name)
|
||||||
|
raise callbacks.Error(s)
|
||||||
|
self.feeds[url] = Feed(name, url, plugin_is_loading)
|
||||||
|
|
||||||
def remove_feed(self, feed):
|
def remove_feed(self, feed):
|
||||||
del self.feed_names[feed.name]
|
del self.feed_names[feed.name]
|
||||||
del self.feeds[feed.url]
|
del self.feeds[feed.url]
|
||||||
@ -163,7 +169,7 @@ class RSS(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
return self.__parent.getCommandMethod(command)
|
return self.__parent.getCommandMethod(command)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
return self.feeds[command[0]].command
|
return self.get_feed(command[0]).get_command(self)
|
||||||
|
|
||||||
def __call__(self, irc, msg):
|
def __call__(self, irc, msg):
|
||||||
self.__parent.__call__(irc, msg)
|
self.__parent.__call__(irc, msg)
|
||||||
@ -275,7 +281,7 @@ class RSS(callbacks.Plugin):
|
|||||||
given URL.
|
given URL.
|
||||||
"""
|
"""
|
||||||
self.register_feed_config(name, url)
|
self.register_feed_config(name, url)
|
||||||
self.feeds[name] = Feed(name, url)
|
self.register_feed(name, url, False)
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
add = wrap(add, ['feedName', 'url'])
|
add = wrap(add, ['feedName', 'url'])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user