コード例 #1
0
def getwikidata(url, ievent):
    """ fetch wiki data """
    try:
        result = fromenc(geturl(url))
    except IOError, ex:
        try:
            errno = ex[0]
        except IndexError:
            handle_exception(ievent=ievent)
            return
        ievent.reply('invalid option')
        return
コード例 #2
0
ファイル: wowwiki.py プロジェクト: RetroRodent/my-gozerbot
def getwikidata(url, ievent):
    """ fetch wiki data """
    try:
        result = fromenc(geturl(url))
    except IOError, ex:
        try:
            errno = ex[0]
        except IndexError:
            handle_exception(ievent=ievent)
            return
        ievent.reply('invalid option')
        return
コード例 #3
0
def getwikidata(url):
    """ fetch wiki data """
    result = fromenc(geturl(url))
    if not result:
        return
    res = rsslist(result)
    txt = ""
    for i in res:
        try:
            txt = i['text']
            break
        except:
            pass
    if not txt:
        return
    #txt = re.sub('\[\[Image:([^\[\]]+|\[\[[^\]]+\]\])*\]\]', '', txt)
    txt = txt.replace('[[', '')
    txt = txt.replace(']]', '')
    txt = re.sub('\s+', ' ', txt)
    return txt
コード例 #4
0
ファイル: irc.py プロジェクト: GuillaumeFromage/my-gozerbot
    def _readloop(self):
        """ loop on the socketfile. """

        self.stopreadloop = 0
        self.stopped = 0
        doreconnect = 0
        timeout = 1
        rlog(5, self.name, 'starting readloop')
        prevtxt = ""

        while not self.stopped and not self.stopreadloop:

            try:
                time.sleep(0.01)
                if self.ssl:
                    intxt = inputmorhps.do(self.sock.read()).split('\n')
                else:
                    intxt = inputmorphs.do(self.fsock.readline()).split('\n')
                # if intxt == "" the other side has disconnected
                if self.stopreadloop or self.stopped:
                    doreconnect = 0
                    break
                if not intxt or not intxt[0]:
                    doreconnect = 1
                    break
                if prevtxt:
                    intxt[0] = prevtxt + intxt[0]
                    prevtxt = ""
                if intxt[-1] != '':
                    prevtxt = intxt[-1]
                    intxt = intxt[:-1]
                for r in intxt:
                    r = r.rstrip()
                    rr = fromenc(r, self.encoding)
                    if not rr:
                        continue
                    res = strippedtxt(rr)
                    res = rr
                    rlog(2, self.name, res)
                    # parse txt read into an ircevent
                    try:
                        ievent = Ircevent().parse(self, res)
                    except Exception, ex:
                        handle_exception()
                        continue
                    # call handle_ievent
                    if ievent:
                        self.handle_ievent(ievent)
                    timeout = 1

            except UnicodeError:
                handle_exception()
                continue

            except socket.timeout:
                # timeout occured .. first time send ping .. reconnect if
                # second timeout follows
                if self.stopped:
                    break
                timeout += 1
                if timeout > 2:
                    doreconnect = 1
                    rlog(10, self.name, 'no pong received')
                    break
                rlog(1, self.name, "socket timeout")
                pingsend = self.ping()
                if not pingsend:
                    doreconnect = 1
                    break
                continue

            except socket.sslerror, ex:
                # timeout occured .. first time send ping .. reconnect if
                # second timeout follows
                if self.stopped or self.stopreadloop:
                    break
                if not 'timed out' in str(ex):
                    handle_exception()
                    doreconnect = 1
                    break
                timeout += 1
                if timeout > 2:
                    doreconnect = 1
                    rlog(10, self.name, 'no pong received')
                    break
                rlog(1, self.name, "socket timeout")
                pingsend = self.ping()
                if not pingsend:
                    doreconnect = 1
                    break
                continue

            except IOError, ex:
                if 'temporarily' in str(ex):
                    continue
コード例 #5
0
ファイル: irc.py プロジェクト: RetroRodent/my-gozerbot
    def _readloop(self):

        """ loop on the socketfile. """

        self.stopreadloop = 0
        self.stopped = 0
        doreconnect = 0
        timeout = 1
        rlog(5, self.name, 'starting readloop')
        prevtxt = ""

        while not self.stopped and not self.stopreadloop:

            try:
                time.sleep(0.01)
                if self.ssl:
                    intxt = inputmorhps.do(self.sock.read()).split('\n')
                else:
                    intxt = inputmorphs.do(self.fsock.readline()).split('\n')
                # if intxt == "" the other side has disconnected
                if self.stopreadloop or self.stopped:
                    doreconnect = 0
                    break
                if not intxt or not intxt[0]:
                    doreconnect = 1
                    break
                if prevtxt:
                    intxt[0] = prevtxt + intxt[0]
                    prevtxt = ""
                if intxt[-1] != '':
                    prevtxt = intxt[-1]
                    intxt = intxt[:-1]
                for r in intxt:
                    r = r.rstrip()
                    rr = fromenc(r, self.encoding)
                    if not rr:
                        continue
                    res = strippedtxt(rr)
                    res = rr
                    rlog(2, self.name, res)
                    # parse txt read into an ircevent
                    try:
                        ievent = Ircevent().parse(self, res)
                    except Exception, ex:
                        handle_exception()
                        continue
                    # call handle_ievent 
                    if ievent:
                        self.handle_ievent(ievent)
                    timeout = 1

            except UnicodeError:
                handle_exception()
                continue

            except socket.timeout:
                # timeout occured .. first time send ping .. reconnect if
                # second timeout follows
                if self.stopped:
                    break
                timeout += 1
                if timeout > 2:
                    doreconnect = 1
                    rlog(10, self.name, 'no pong received')
                    break
                rlog(1, self.name, "socket timeout")
                pingsend = self.ping()
                if not pingsend:
                    doreconnect = 1
                    break
                continue

            except socket.sslerror, ex:
                # timeout occured .. first time send ping .. reconnect if
                # second timeout follows
                if self.stopped or self.stopreadloop:
                    break
                if not 'timed out' in str(ex):
                    handle_exception()
                    doreconnect = 1
                    break
                timeout += 1
                if timeout > 2:
                    doreconnect = 1
                    rlog(10, self.name, 'no pong received')
                    break
                rlog(1, self.name, "socket timeout")
                pingsend = self.ping()
                if not pingsend:
                    doreconnect = 1
                    break
                continue

            except IOError, ex:
                if 'temporarily' in str(ex):
                    continue
コード例 #6
0
    def toirc(self, bot):
        """ set ircevent compat attributes. """

        self.jidchange = False
        self.cmnd = 'Message'
        self.conn = None
        self.prefix = ""
        self.postfix = ""
        self.target = ""
        self.arguments = []
        self.resource = fromenc(self.getFrom().getResource())
        self.channel = fromenc(self.getFrom().getStripped())
        self.origchannel = self.channel
        self.nick = self.resource
        self.user = ""

        try:
            self.jid = bot.jids[self.channel][self.resource]
            self.jidchange = True
        except KeyError:
            self.jid = self.getFrom()

        self.ruserhost = self.jid
        self.userhost = fromenc(str(self.jid))
        self.stripped = fromenc(self.jid.getStripped())
        self.printto = self.channel
        self.txt = jabberstrip(fromenc(self.getBody()))
        self.origtxt = self.txt
        self.to = fromenc(str(self.getTo()))
        self.time = time.time()
        self.args = []
        self.rest = ' '.join(self.args)
        self.usercmnd = 0
        self.isresponse = False
        self.bot = bot
        self.sock = None
        self.closequeue = False
        self.allowqueue = True
        self.inqueue = None
        self.queues = []
        self.speed = 5
        self.options = {}
        self.optionset = []
        self.groups = None
        self.type = self.getType()
        self.cc = ""
        self.alias = ""
        self.aliased = ""
        self.denied = False

        if self.type == 'groupchat':
            self.groupchat = True
            if self.jidchange:
                self.userhost = self.stripped
        else:
            self.groupchat = False
            self.userhost = self.stripped

        self.msg = not self.groupchat
        self.bot.nrevents += 1
        self.filter = []
コード例 #7
0
ファイル: jabbermsg.py プロジェクト: RetroRodent/my-gozerbot
    def toirc(self, bot):

        """ set ircevent compat attributes. """

        self.jidchange = False
        self.cmnd = 'Message'
        self.conn = None
        self.prefix = ""
        self.postfix = ""
        self.target = ""
        self.arguments = []
        self.resource = fromenc(self.getFrom().getResource())
        self.channel = fromenc(self.getFrom().getStripped())
        self.origchannel = self.channel
        self.nick = self.resource
        self.user = ""

        try:
            self.jid = bot.jids[self.channel][self.resource]
            self.jidchange = True
        except KeyError:
            self.jid = self.getFrom()

        self.ruserhost = self.jid
        self.userhost = fromenc(str(self.jid))
        self.stripped = fromenc(self.jid.getStripped())
        self.printto = self.channel
        self.txt = jabberstrip(fromenc(self.getBody()))
        self.origtxt = self.txt
        self.to = fromenc(str(self.getTo()))
        self.time = time.time()
        self.args = []
        self.rest = ' '.join(self.args)
        self.usercmnd = 0
        self.isresponse = False
        self.bot = bot
        self.sock = None
        self.closequeue = False
        self.allowqueue = True
        self.inqueue = None
        self.queues = []
        self.speed = 5
        self.options = {}
        self.optionset = []
        self.groups = None
        self.type = self.getType()
        self.cc = ""
        self.alias = ""
        self.aliased = ""
        self.denied = False

        if self.type == 'groupchat':
            self.groupchat = True
            if self.jidchange:
                self.userhost = self.stripped
        else:
            self.groupchat = False
            self.userhost = self.stripped

        self.msg = not self.groupchat
        self.bot.nrevents += 1
        self.filter = []