summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <lassulus@googlemail.com>2013-02-07 13:13:37 +0100
committerlassulus <lassulus@googlemail.com>2013-02-07 13:13:37 +0100
commit41fb505a5dc5c81965cc45dd00d14fe4150b8a42 (patch)
tree8d15b76a01d71fedb926c1fb7f167162cd862013
parent5b87cdd1f83e8191f01ac9e9c3441e2a47874a20 (diff)
added ircbot
-rwxr-xr-xircbot/bot.py71
-rw-r--r--ircbot/feeds2
2 files changed, 73 insertions, 0 deletions
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