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
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
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
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 = []