diff options
| author | lassulus <lassulus@googlemail.com> | 2014-01-04 05:09:40 +0100 | 
|---|---|---|
| committer | lassulus <lassulus@googlemail.com> | 2014-01-04 05:09:40 +0100 | 
| commit | 366f912a3771a1c5b92441ef7efed52541b33827 (patch) | |
| tree | ccf436ee2e708d53b332a17be235f84730031de5 /ircbot/rssbot.py | |
| parent | 2a730efca62a76d7344ad6bcaf0fa38acf925cdc (diff) | |
ircbot: now with controller
Diffstat (limited to 'ircbot/rssbot.py')
| -rwxr-xr-x | ircbot/rssbot.py | 81 | 
1 files changed, 81 insertions, 0 deletions
| diff --git a/ircbot/rssbot.py b/ircbot/rssbot.py new file mode 100755 index 00000000..40c4554a --- /dev/null +++ b/ircbot/rssbot.py @@ -0,0 +1,81 @@ +#!/usr/bin/python +import irc.bot +import feedparser +import _thread +import math +from time import sleep + +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 +        self.chan = chan +        self.to = timeout +        self.oldnews = [] +        self.sendqueue = [] +        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.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: +                    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): +        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: +            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) + + +    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() | 
