From 41fb505a5dc5c81965cc45dd00d14fe4150b8a42 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 7 Feb 2013 13:13:37 +0100 Subject: added ircbot --- ircbot/bot.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ircbot/feeds | 2 ++ 2 files changed, 73 insertions(+) create mode 100755 ircbot/bot.py create mode 100644 ircbot/feeds (limited to 'ircbot') diff --git a/ircbot/bot.py b/ircbot/bot.py new file mode 100755 index 00000000..607e65c7 --- /dev/null +++ b/ircbot/bot.py @@ -0,0 +1,71 @@ +#!/usr/bin/python +import irc.bot +import feedparser +import _thread +import math +from time import sleep + +class TestBot(irc.bot.SingleServerIRCBot): + def __init__(self, rss, name, server='10.243.231.66', 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 + self.chan = chan + self.to = timeout + self.oldnews = [] + self.sendqueue = [] + for entry in self.feed.entries: + 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.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) + + + def updateloop(self): + while True: + sleep(self.to) + self.feed = feedparser.parse(self.url) + for entry in self.feed.entries: + if not entry.link in self.oldnews: + self.send(entry.title + " " + entry.link) + self.oldnews.append(entry.link) + + def sendall(self): + while len(self.sendqueue) > 0: + sleep(1) + self.send(self.sendqueue.pop()) + + def send(self, string): + if len(string) < 450: + self.connection.privmsg(self.chan, string) + else: + for x in range(math.ceil(len(string)/450)): + self.connection.privmsg(self.chan, string[x*450:(x+1)*450]) + sleep(1) + + + def on_welcome(self, connection, event): + connection.join(self.chan) + +# def on_privmsg(self, connection, event): +# print event.source().split('!')[0], event.arguments() + +F = open("feeds", "r") +lines = F.readlines() +F.close() + +botarray = [] +for line in lines: + lineArray = line.split('|') + bot = TestBot(lineArray[1], lineArray[0]) + #bot.start() + botarray.append(bot) + +def startall(): + for bot in botarray: + bot.start() diff --git a/ircbot/feeds b/ircbot/feeds new file mode 100644 index 00000000..50fe0667 --- /dev/null +++ b/ircbot/feeds @@ -0,0 +1,2 @@ +HN|http://news.ycombinator.com/rss +Fefe|http://blog.fefe.de/rss.xml -- cgit v1.2.3 From d7ff9d79f3a7a589e92dd4eec835953af5fea21f Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 8 Feb 2013 17:09:18 +0100 Subject: added comments and better stringsplit --- ircbot/bot.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'ircbot') diff --git a/ircbot/bot.py b/ircbot/bot.py index 607e65c7..25a1014f 100755 --- a/ircbot/bot.py +++ b/ircbot/bot.py @@ -18,7 +18,11 @@ class TestBot(irc.bot.SingleServerIRCBot): self.oldnews = [] self.sendqueue = [] for entry in self.feed.entries: - self.sendqueue.append(entry.title + " " + entry.link) + 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): @@ -32,7 +36,10 @@ class TestBot(irc.bot.SingleServerIRCBot): self.feed = feedparser.parse(self.url) for entry in self.feed.entries: if not entry.link in self.oldnews: - 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): @@ -44,8 +51,11 @@ class TestBot(irc.bot.SingleServerIRCBot): if len(string) < 450: self.connection.privmsg(self.chan, string) else: - for x in range(math.ceil(len(string)/450)): - self.connection.privmsg(self.chan, string[x*450:(x+1)*450]) + space = 0 + for x in range(math.ceil(len(string)/400)): + oldspace = space + space = string.find(" ", (x+1)*400, (x+1)*400+50) + self.connection.privmsg(self.chan, string[oldspace:space]) sleep(1) -- cgit v1.2.3