From 393abf180b6bfcf89ab8544ec691a97d840f0963 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 4 Jan 2014 21:38:58 +0100 Subject: ircbot: more (fancy) features --- ircbot/contoller.py | 20 ++++++++++++++++++-- ircbot/new_feeds | 33 +++++++++++++++++++++++++++++---- ircbot/rssbot.py | 28 ++++++++++++++-------------- 3 files changed, 61 insertions(+), 20 deletions(-) diff --git a/ircbot/contoller.py b/ircbot/contoller.py index 71d04536..9466343d 100755 --- a/ircbot/contoller.py +++ b/ircbot/contoller.py @@ -33,7 +33,11 @@ class NewsBot(irc.bot.SingleServerIRCBot): args_array = event.arguments[0].split() if args_array[0][:-1]==self.name: answer = self.read_message(args_array[1:]) - self.connection.privmsg(self.chan, answer) + self.send(answer) + + def send(self, string): + for line in string.split('\n'): + self.connection.privmsg(self.chan, line) def on_pubmsg(self, connection, event): @@ -63,7 +67,19 @@ class NewsBot(irc.bot.SingleServerIRCBot): return "bots saved to " + feedfile elif args[0] == 'caps': - return "add del save caps" + return "add del save caps list" + + elif args[0] == 'list': + output_buffer = '' + for bot in bots: + output_buffer += bot + ' url: ' + bots[bot].url + '\n' + return output_buffer + + elif args[0] == 'info': + if args[1] in bots: + return 'title: ' + bots[args[1]].feed.feed.title + '\n' + 'size: ' + len(bots[args[1]].feed.entries) + else: + return 'bot not found' else: return "unknown command" diff --git a/ircbot/new_feeds b/ircbot/new_feeds index cc3bad6f..767b59f2 100644 --- a/ircbot/new_feeds +++ b/ircbot/new_feeds @@ -1,7 +1,32 @@ +fvwm|http://freecode.com/projects/fvwm/releases.atom +aje|http://www.aljazeera.com/Services/Rss/?PostingId=2007731105943979989 +rt|http://rt.com/rss/news/ +anon|http://anoninsiders.net/feed/ +linuxinsider|http://www.linuxinsider.com/perl/syndication/rssfull.pl +antirez|http://antirez.com/rss +lisp|http://planet.lisp.org/rss20.xml +reddit_prog|http://reddit.com/r/programming/ +rawstory|http://www.rawstory.com/rs/feed/ fefe|http://blog.fefe.de/rss.xml +xkcd|https://xkcd.com/rss.xml +slashdot|http://rss.slashdot.org/Slashdot/slashdot +spiegel_top|http://www.spiegel.de/schlagzeilen/tops/index.rss +weechat|http://dev.weechat.org/feed/atom +spiegel_eil|http://www.spiegel.de/schlagzeilen/eilmeldungen/index.rss +reddit_sci|http://www.reddit.com/r/science/.rss +reuters|http://feeds.reuters.com/Reuters/worldNews HN|http://news.ycombinator.com/rss -lisp|http://planet.lisp.org/rss20.xml -LtU|http://lambda-the-ultimate.org/rss.xml -antirez|http://antirez.com/rss +reddit_tech|http://www.reddit.com/r/technology/.rss coinspotting|http://coinspotting.com/rss -xkcd|https://xkcd.com/rss.xml +ccc|http://www.ccc.de/rss/updates.rdf +archlinux|http://www.archlinux.org/feeds/news/ +reddit_consp|http://reddit.com/r/conspiracy/.rss +scmp|http://www.scmp.com/rss/91/feed +LtU|http://lambda-the-ultimate.org/rss.xml +reddit_world|http://www.reddit.com/r/worldnews/.rss +sec-db|http://feeds.security-database.com/SecurityDatabaseToolsWatch +exploitdb|http://www.exploit-db.com/rss.xml +heise|http://heise.de.feedsportal.com/c/35207/f/653902/index.rss +wp_world|http://feeds.washingtonpost.com/rss/rss_blogpost +ars|http://feeds.arstechnica.com/arstechnica/index?format=xml +golem|http://www.golem.de/rss.php?feed=RSS1.0 diff --git a/ircbot/rssbot.py b/ircbot/rssbot.py index 5d2beedc..008f9fa0 100755 --- a/ircbot/rssbot.py +++ b/ircbot/rssbot.py @@ -9,7 +9,6 @@ class RssBot(irc.bot.SingleServerIRCBot): def __init__(self, rss, name, server='ire', port=6667, chan='#news', timeout=60): irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name) self.url = rss - self.feed = feedparser.parse(self.url) self.name = name self.server = server self.port = port @@ -18,33 +17,34 @@ class RssBot(irc.bot.SingleServerIRCBot): self.oldnews = [] self.sendqueue = [] self.loop = True - for entry in self.feed.entries: - try: - self.sendqueue.append(entry.title + " " + entry.link + " com: " + entry.comments) - except AttributeError: - self.sendqueue.append(entry.title + " " + entry.link) - - self.oldnews.append(entry.link) def start(self): - self.upd_thread = _thread.start_new_thread(self.updateloop, ()) + self.upd_loop = _thread.start_new_thread(self.updateloop, ()) self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) - def stop(self): self.loop = False self.disconnect() def updateloop(self): + self.feed = feedparser.parse(self.url) + for entry in self.feed.entries: + #try: + # self.sendqueue.append(entry.title + " " + entry.link + " com: " + entry.comments) + #except AttributeError: + self.sendqueue.append(entry.title + " " + entry.link) + + self.oldnews.append(entry.link) + while self.loop: sleep(self.to) self.feed = feedparser.parse(self.url) for entry in self.feed.entries: if not entry.link in self.oldnews: - try: - self.send(entry.title + " " + entry.link + " com: " + entry.comments) - except AttributeError: - self.send(entry.title + " " + entry.link) + #try: + # self.send(entry.title + " " + entry.link + " com: " + entry.comments) + #except AttributeError: + self.send(entry.title + " " + entry.link) self.oldnews.append(entry.link) def sendall(self): -- cgit v1.2.3