def nano(self): print "[Nano] called" now = time.time() then = time.mktime( datetime.datetime( datetime.datetime.now().year, 11, 1, 00, 00).timetuple()) delta = now - then target = 50000.0 month = 2592000.0 end = then + month if now > then + month: return "You should have finished by now" if delta < 0: delta = math.fabs(delta) return "You should start Nanowrimo in %s" % tools.niceTimeDelta( delta, "decimal") persec = target / month current = delta * persec return "You should be at %d words by now, %s left" % ( current, tools.niceTimeDelta(month - delta))
def nano(self): self.logger.info("[Nano] called") now = time.time() then = time.mktime( datetime.datetime( datetime.datetime.now().year, 11, 1, 00, 00).timetuple()) delta = now - then target = 50000.0 month = 2592000.0 end = then + month if now > then + month: return "You should have finished by now" if delta < 0: delta = math.fabs(delta) return "You should start Nanowrimo in %s" % tools.niceTimeDelta( delta, "decimal") persec = target / month current = delta * persec return "You should be at %d words by now, %s left" % ( current, tools.niceTimeDelta(month - delta))
def lastquit(self, lasttime, searchingfor): cursor = self.dbconnection.cursor() cursor.execute( 'SELECT last_quit, reason from lastquit where username LIKE %s and last_quit > %s', (searchingfor, lasttime)) quitresult = cursor.fetchone() if quitresult == None: print "No quit for %s after %s" % (searchingfor, lasttime) return "" else: print "Quit result" print quitresult quittime = time.localtime(quitresult[0]) timedelta = time.mktime(quittime) - lasttime print quittime print "Localtime of %s is %s" % (quitresult[0], time.localtime(quitresult[0])) if (timedelta < 60): deltastring = "seconds" else: deltastring = tools.niceTimeDelta(timedelta) if (timedelta > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" quittime = datetime.datetime.fromtimestamp( quitresult[0]).strftime(timefmt) #quittime = datetime.datetime.fromtimestamp(quitresult[0]).strftime("%H:%M") return ", they quit %s later (%s) with the message '%s'" % ( deltastring, quittime, quitresult[1]) return message
def fetch_title(self, url): parsedurl = urlparse.urlparse(url) [yt_type, yt_id] = self.url_to_ID(parsedurl) if yt_type == 'video': item = self.youtube.videos().list(part="snippet,contentDetails", id=yt_id).execute() self.logger.info(item) video = item['items'][0] duration = isodate.parse_duration( video['contentDetails']['duration']) title = video['snippet']['title'] description = video['snippet']['description'] self.logger.info(title) deltastring = tools.niceTimeDelta(duration.total_seconds()) #deltastring = entry.media.duration.seconds self.logger.info(title) return "Youtube video: %s (%s)" % ( title, deltastring)
def lastquit(self, lasttime, searchingfor): cursor = self.dbconnection.cursor() cursor.execute( 'SELECT last_quit, reason from lastquit where username LIKE %s and last_quit > %s', (searchingfor, lasttime)) quitresult = cursor.fetchone() if quitresult is None: self.logger.info("[WHOWAS] No quit for %s after %s" % (searchingfor, lasttime)) return "" else: quittime = time.localtime(quitresult[0]) timedelta = time.mktime(quittime) - lasttime self.logger.info("[WHOWAS] Quit result: %s @ %s" % (quitresult, quittime)) if(timedelta < 60): deltastring = "seconds" else: deltastring = tools.niceTimeDelta(timedelta) if (timedelta > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" quittime = datetime.datetime.fromtimestamp( quitresult[0]).strftime(timefmt) return ", they quit %s later (%s) with the message '%s'" % ( deltastring, quittime, quitresult[1]) return message
def lastquit(self, lasttime, searchingfor): cursor = self.dbconnection.cursor() cursor.execute('SELECT last_quit, reason from lastquit where username LIKE %s and last_quit > %s', (searchingfor, lasttime ) ) quitresult = cursor.fetchone(); if quitresult == None: print "No quit for %s after %s" % (searchingfor, lasttime) return ""; else: print "Quit result" print quitresult quittime = time.localtime(quitresult[0]) timedelta = time.mktime(quittime) - lasttime; print quittime print "Localtime of %s is %s" % (quitresult[0], time.localtime(quitresult[0])) if(timedelta < 60): deltastring = "seconds" else: deltastring = tools.niceTimeDelta(timedelta); if (timedelta > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M"; quittime = datetime.datetime.fromtimestamp(quitresult[0]).strftime(timefmt) #quittime = datetime.datetime.fromtimestamp(quitresult[0]).strftime("%H:%M") return ", they quit %s later (%s) with the message '%s'" % (deltastring, quittime, quitresult[1]) return message;
def lastseen(self, searchingfor, after_timestamp=0, depth=0): self.logger.info("[WHOWAS] Looking for %s after %s" % (searchingfor, after_timestamp)) if depth > 4: return ' ... and at that point I gave up' cursor = self.dbconnection.cursor() cursor.execute( 'SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc', (searchingfor, int(after_timestamp))) result = cursor.fetchone() if result is None: message = "I haven't seen %s say anything" % searchingfor self.logger.info("[WHOWAS] Looking for a quit for %s after %s" % ( searchingfor, after_timestamp)) return "%s%s" % (message, self.lastquit( after_timestamp, searchingfor)) elif (result[2][0] == ">"): # Last action is a rename deltadesc = "ago" if (after_timestamp == 0): self.logger.info("[WHOWAS] No after timestamp for %s, Now %s, Lastseen %s" % ( result[1], time.localtime(), time.localtime(result[1]))) now = time.mktime(time.localtime()) deltadiff = now - result[1] else: self.logger.info("[WHOWAS After timestamp %s" % after_timestamp) now = after_timestamp deltadesc = "later" deltadiff = result[1] - after_timestamp deltastring = tools.niceTimeDelta(deltadiff) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" #timefmt = "%a %d/%b/%Y %H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) message = "I last saw %s %s %s (%s) relabeling themselves as \"%s\". %s" % ( result[0], deltastring, deltadesc, timechanged, result[2][1:], self.lastseen(result[2][1:], int(result[1]), depth + 1)) else: # Last action is a phrase self.logger.info("[WHOWAS] Found a last phrase:") deltadesc = "ago" if (after_timestamp == 0): now = time.mktime(time.localtime()) deltastring = tools.niceTimeDelta(now - result[1]) else: now = time.mktime(time.localtime(result[1])) deltadesc = "later" deltastring = tools.niceTimeDelta(result[1] - after_timestamp) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) if (result[3] != self.channel): message = "I last saw %s %s %s (%s) on %s" % ( result[0], deltastring, deltadesc, timechanged, result[3]) else: message = "I last saw %s %s %s (%s) saying \"%s\"" % ( result[0], deltastring, deltadesc, timechanged, result[2]) return "%s%s" % (message, self.lastquit(result[1], searchingfor))
def lastseen(self, searchingfor, after_timestamp=0, depth=0): print "Looking for %s after %s" % (searchingfor, after_timestamp) if depth > 4: return ' ... and at that point I gave up' cursor = self.dbconnection.cursor() cursor.execute( 'SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc', (searchingfor, int(after_timestamp))) print 'SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc limit 1' % ( searchingfor, after_timestamp) result = cursor.fetchone() if result == None: message = "I haven't seen %s say anything" % searchingfor print "Looking for a quit for %s after %s" % (searchingfor, after_timestamp) return "%s%s" % (message, self.lastquit(after_timestamp, searchingfor)) elif (result[2][0] == ">"): # Last action is a rename deltadesc = "ago" if (after_timestamp == 0): print "No after timestamp" print result[1] print "Now" print time.localtime() print "Lastseen" print time.localtime(result[1]) now = time.mktime(time.localtime()) deltadiff = now - result[1] else: print "After timestamp %s" % after_timestamp print time.localtime() now = after_timestamp deltadesc = "later" deltadiff = result[1] - after_timestamp deltastring = tools.niceTimeDelta(deltadiff) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" #timefmt = "%a %d/%b/%Y %H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) message = "I last saw %s %s %s (%s) relabeling themselves as \"%s\". %s" % ( result[0], deltastring, deltadesc, timechanged, result[2][1:], self.lastseen(result[2][1:], int(result[1]), depth + 1)) else: # Last action is a phrase print "Found a last phrase:" print result deltadesc = "ago" if (after_timestamp == 0): print "No after timestamp" print result[1] print "Now is %s" % time.localtime() print "Localtime of %s is %s" % (result[1], time.localtime(result[1])) now = time.mktime(time.localtime()) deltastring = tools.niceTimeDelta(now - result[1]) else: #print "After timestamp %s" % after_timestamp #print time.localtime() #print "Localtime of %s is %s" % (result[1], time.localtime(result[1])) #now = after_timestamp now = time.mktime(time.localtime(result[1])) deltadesc = "later" deltastring = tools.niceTimeDelta(result[1] - after_timestamp) print "Happening after %s" % after_timestamp print "Event happened %s" % result[1] if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) if (result[3] != self.channel): message = "I last saw %s %s %s (%s) on %s" % ( result[0], deltastring, deltadesc, timechanged, result[3]) else: message = "I last saw %s %s %s (%s) saying \"%s\"" % ( result[0], deltastring, deltadesc, timechanged, result[2]) return "%s%s" % (message, self.lastquit(result[1], searchingfor))
def channelAction(self, connection, user, channel, message, matchindex): print "[WEBLINK] Activated, matchindex is %d" % matchindex if matchindex == 3: # Weblink print "[WEBLINK] That looks like a weblink : %s" % message links = self.grabUrls(message) print links now = time.time() for url in links: urlp = urlparse.urlparse(url) print url if "youtube" in urlp.netloc.split("."): print "That's a Youtube Link" query = urlparse.parse_qs(urlp.query) if "v" in query.keys(): print "That's a Youtube Link with a v! %s " % query['v'][0] entry = self.yt_service.GetYouTubeVideoEntry(video_id=query['v'][0]) print entry deltastring = tools.niceTimeDelta(int(entry.media.duration.seconds)) #deltastring = entry.media.duration.seconds output = "Youtube video: %s (%s)" % (entry.media.title.text, deltastring) print output connection.msg(channel,output.encode("utf-8")) cursor = self.dbconnection.cursor() cursor.execute('insert into urllist (time, username, message, channel) values (%s, %s, %s, %s)', (now, user, message, channel) ) self.lastlink[channel] = {'id': cursor.lastrowid, 'url': links[0] } self.dbconnection.commit() elif matchindex == 0: # Shorten That print "[WEBLINK] Shortening URL" print self.lastlink surl = self.bitly.shorten(self.lastlink[channel]['url']) url_split = urlparse.urlparse(self.lastlink[channel]['url']) output = "%s: %s link shortened to %s" % (user, url_split[1], surl['url']) connection.msg(channel,output.encode("utf-8")) cursor = self.dbconnection.cursor() cursor.execute('update urllist set shorturl = %s where id = %s', ( surl['url'], self.lastlink[channel]['id'] ) ) self.dbconnection.commit() elif matchindex == 1: # SHorten user's url for module in connection.channelModules: if module.__name == "Memory": memory = module; matches = self.channelMatch[matchindex].findall(message)[0] print matches result = memory.search(channel, matches[0], "http"); print result if len(result) == 0: output = "%s: I've no idea which link you mean" % user connection.msg(channel,output.encode("utf-8")) else: links = self.grabUrls(result[-1]['message']) for link in links: surl = self.bitly.shorten(link) url_split = urlparse.urlparse(link) output = "%s: %s link shortened to %s" % (user, url_split[1], surl['url']) connection.msg(channel,output.encode("utf-8")) elif matchindex == 2: # Shorten this URL print "[WEBLINK] Shortening requested URL : %s" % message links = self.grabUrls(message) if len(links) == 0: print "[WEBLINK] No links found" connection.msg(channel, "%s: I see no links in that" % user) return print links cursor = self.dbconnection.cursor() for link in links: print link now = time.time() surl = self.bitly.shorten(link) cursor.execute('insert into urllist (time, username, message, channel, shorturl) values (%s, %s, %s, %s, %s)', (now, user, message, channel, surl['url']) ) url_split = urlparse.urlparse(link) output = "%s: %s link shortened to %s" % (user, url_split[1], surl['url']) connection.msg(channel,output.encode("utf-8"))
def lastseen(self, searchingfor, after_timestamp = 0, depth = 0): print "Looking for %s after %s" % (searchingfor, after_timestamp) if depth > 4: return ' ... and at that point I gave up'; cursor = self.dbconnection.cursor() cursor.execute('SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc', (searchingfor, int(after_timestamp)) ) print 'SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc limit 1' % ( searchingfor, after_timestamp) result = cursor.fetchone() if result == None: message = "I haven't seen %s say anything" % searchingfor print "Looking for a quit for %s after %s" % (searchingfor, after_timestamp) return "%s%s" % (message, self.lastquit(after_timestamp, searchingfor)) elif (result[2][0] == ">"): # Last action is a rename deltadesc = "ago" if (after_timestamp == 0): print "No after timestamp" print result[1] print "Now" print time.localtime() print "Lastseen" print time.localtime(result[1]) now = time.mktime(time.localtime()) deltadiff = now - result[1] else: print "After timestamp %s" % after_timestamp print time.localtime() now = after_timestamp deltadesc = "later" deltadiff = result[1] - after_timestamp deltastring = tools.niceTimeDelta(deltadiff) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M"; #timefmt = "%a %d/%b/%Y %H:%M" timechanged = datetime.datetime.fromtimestamp(result[1]).strftime(timefmt) message = "I last saw %s %s %s (%s) relabeling themselves as \"%s\". %s" % (result[0], deltastring, deltadesc, timechanged, result[2][1:], self.lastseen(result[2][1:], int(result[1]), depth +1 )) else: # Last action is a phrase print "Found a last phrase:" print result deltadesc = "ago" if (after_timestamp == 0): print "No after timestamp" print result[1] print "Now is %s" % time.localtime() print "Localtime of %s is %s" % (result[1], time.localtime(result[1])) now = time.mktime(time.localtime()) deltastring = tools.niceTimeDelta(now - result[1]) else: #print "After timestamp %s" % after_timestamp #print time.localtime() #print "Localtime of %s is %s" % (result[1], time.localtime(result[1])) #now = after_timestamp now = time.mktime(time.localtime(result[1])) deltadesc = "later" deltastring = tools.niceTimeDelta(result[1] - after_timestamp) print "Happening after %s" % after_timestamp print "Event happened %s" % result[1] if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M"; timechanged = datetime.datetime.fromtimestamp(result[1]).strftime(timefmt) if (result[3] != self.channel): message = "I last saw %s %s %s (%s) on %s" % (result[0], deltastring, deltadesc, timechanged, result[3]) else: message = "I last saw %s %s %s (%s) saying \"%s\"" % (result[0], deltastring, deltadesc, timechanged, result[2]) return "%s%s" % (message, self.lastquit(result[1], searchingfor))
def howLong(self, match): print "[How Long] called with '%s'" % match[0][1] eventSearch = match[0][1] eventName = match[0][1] if eventName.lower() == "downtime opens": return "FOIP." #aliases = { 'cunts do christmas' : 'Havocstan Midwinter Festival', "cdc" : 'Havocstan Midwinter Festival'} #if aliases.has_key(eventName.lower()): # print "found alias" # eventSearch = aliases[eventName.lower()] if (match[0][0] == "until"): print "Until match" firstTry = (">", "asc") thenTry = ("<", "desc") tiswas = "is" else: print "since match: %s " % match firstTry = ("<", "desc") thenTry = (">", "asc") tiswas = "was" cursor = self.dbconnection.cursor() # First, try direct description matches. First in the future (past if it's since)... rawquery = 'SELECT datetime, description, class, datetime_end, UNIX_TIMESTAMP(datetime) as datetime_epoch, UNIX_TIMESTAMP(datetime_end) as datetime_end_epoch FROM events where (description LIKE %%s or aliases LIKE %%s) and datetime %s now() order by datetime %s' try: result = dateutil.parser.parse(eventSearch) event = (result,eventSearch,"",None,time.mktime(result.timetuple()),None) except ValueError: query = rawquery % (firstTry[0], firstTry[1]) cursor.execute(query, (eventSearch, "%%%s%%" % eventSearch) ) event = cursor.fetchone() print query % (eventSearch, "%%%s%%" % eventSearch) # Second, try Description matches in the past (future if it's since)... if event == None: query = rawquery % (thenTry[0], thenTry[1]) cursor.execute(query, (eventSearch, "%%%s%%" % eventSearch) ) event = cursor.fetchone() if tiswas == "was": tiswas = "is" else: tiswas = "was" # Now set up the class query: rawquery = 'SELECT datetime, description, class, datetime_end, UNIX_TIMESTAMP(datetime) as datetime_epoch, UNIX_TIMESTAMP(datetime_end) as datetime_end_epoch FROM events where class LIKE %%s and datetime %s now() order by datetime %s' # Third, try Class matches in the future (past if it's since)... if event == None: query = rawquery % (firstTry[0], firstTry[1]) cursor.execute(query, (eventSearch, ) ) event = cursor.fetchone() # Fourth, try Class matches in the past (future if it's since)... if event == None: query = rawquery % (thenTry[0], thenTry[1]) cursor.execute(query, (eventSearch, ) ) event = cursor.fetchone() # Aborted attempt to handle arbitary dates #if event == None: # print "Attempting to parse %s as date" % eventSearch # try: # cmd = "'echo strtotime(\"%s\")\;'" % eventSearch # #print cmd # #sysres = subprocess.Popen(["/usr/bin/php",cmd ], stdout=subprocess.PIPE).communicate() # output = Popen(["/usr/bin/php", "-r", cmd], stdout=PIPE).communicate()[0] # print output # #sysres = os.system(cmd); # print "Sysres: %s " % sysres; # if not sysres == 0: # eventDate = datetime.datetime.fromtimestamp(sysres); # #epoch = time.mktime(eventDate.timetuple(); # event = (eventDate, eventDate.isoformat(" "), "Time", None, epoch, None) # except ValueError: # pass print event # Then give up if event == None: return "No idea, sorry. There's a list of stuff I know about at http://www.maelfroth.org/events.php" print event eventName = event[1] # 0 datetime, 1 description, 2 class, 3 date_end, 4 date_epoch, 5 date_end_epoch current_time = time.time() if(event[5] == None): print "Using is (No time out data)" timing_position = "i" eventTime = int(event[4]) elif (int(event[4]) > current_time): print "Using time in" timing_position = "start" eventTime = int(event[4]) elif event[5]: print "Using time out" timing_position = "end" eventTime = int(event[5]) else: print "Using time in (No time out data)" timing_position = "i" eventTime = int(event[4]) #eventName = event[1] eventClass = event[2] if (eventTime < current_time): swap = current_time current_time = eventTime eventTime = swap returnformat = "%s %s %s ago" if timing_position == 'i': timing_position = 'was' else: timing_position = "%sed" % timing_position else: returnformat = "%s %ss in %s" timedelta = (eventTime - current_time) deltastring = tools.niceTimeDelta(timedelta, self.timein) print returnformat % (eventName, timing_position, deltastring) return returnformat % (eventName, timing_position,deltastring)
def getTitle(self, url): title = False urlp = urlparse.urlparse(url) print url if "twitter" in urlp.netloc.split("."): path = urlp.path.split("/") id = path[-1] tweet = self.twitter.statuses.show(id=id) print tweet title = "@%s (%s): %s" % ( tweet['user']['name'], tweet['user']['screen_name'], tweet['text']) elif "youtube" in urlp.netloc.split("."): print "That's a Youtube Link" query = urlparse.parse_qs(urlp.query) if "v" in query.keys(): print "That's a Youtube Link with a v! %s " % query['v'][0] entry = self.yt_service.GetYouTubeVideoEntry( video_id=query['v'][0]) print entry deltastring = tools.niceTimeDelta( int(entry.media.duration.seconds)) #deltastring = entry.media.duration.seconds title = "Youtube video: %s (%s)" % ( entry.media.title.text, deltastring) print title # connection.message(channel,title) else: headers = { 'User-agent': 'Lampstand IRC Bot (contact [email protected])'} try: req = requests.get(url, headers=headers, timeout=30) except requests.exceptions.Timeout: return "That link timed out" k = len(req.content) / 1024 if req.status_code != 200: title = "That link returned an error %s" % (req.status_code) elif req.headers['content-type'].find("text/html") != -1 or req.headers['content-type'].find("application/xhtml+xml") != -1: soup = BeautifulSoup.BeautifulSoup( req.text, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES) title = soup.title.string else: if req.headers['content-type'].find("image/") == 0: image_file = StringIO.StringIO(req.content) #color = most_colour.most_colour(image_file) image_file.seek(0) im = Image.open(image_file) try: im.seek(1) title = "An animation, %dx%d (%dk)" % ( im.size[0], im.size[1], k) except: title = "An image, %dx%d (%dk)" % ( im.size[0], im.size[1], k) else: title = "A %s file (%dk)" % ( req.headers['content-type'], k) return title.strip()
def lastseen(self, searchingfor, after_timestamp=0, depth=0): self.logger.info("[WHOWAS] Looking for %s after %s" % (searchingfor, after_timestamp)) if depth > 4: return ' ... and at that point I gave up' cursor = self.dbconnection.cursor() cursor.execute( 'SELECT username, last_seen, last_words, channel FROM lastseen where username LIKE %s and last_seen > %s order by last_seen desc', (searchingfor, int(after_timestamp))) result = cursor.fetchone() if result is None: message = "I haven't seen %s say anything" % searchingfor self.logger.info("[WHOWAS] Looking for a quit for %s after %s" % (searchingfor, after_timestamp)) return "%s%s" % (message, self.lastquit(after_timestamp, searchingfor)) elif (result[2][0] == ">"): # Last action is a rename deltadesc = "ago" if (after_timestamp == 0): self.logger.info( "[WHOWAS] No after timestamp for %s, Now %s, Lastseen %s" % (result[1], time.localtime(), time.localtime(result[1]))) now = time.mktime(time.localtime()) deltadiff = now - result[1] else: self.logger.info("[WHOWAS After timestamp %s" % after_timestamp) now = after_timestamp deltadesc = "later" deltadiff = result[1] - after_timestamp deltastring = tools.niceTimeDelta(deltadiff) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" #timefmt = "%a %d/%b/%Y %H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) message = "I last saw %s %s %s (%s) relabeling themselves as \"%s\". %s" % ( result[0], deltastring, deltadesc, timechanged, result[2][1:], self.lastseen(result[2][1:], int(result[1]), depth + 1)) else: # Last action is a phrase self.logger.info("[WHOWAS] Found a last phrase:") deltadesc = "ago" if (after_timestamp == 0): now = time.mktime(time.localtime()) deltastring = tools.niceTimeDelta(now - result[1]) else: now = time.mktime(time.localtime(result[1])) deltadesc = "later" deltastring = tools.niceTimeDelta(result[1] - after_timestamp) if ((now - result[1]) > 86400): timefmt = "%a %d/%b/%Y %H:%M" else: timefmt = "%H:%M" timechanged = datetime.datetime.fromtimestamp( result[1]).strftime(timefmt) if (result[3] != self.channel): message = "I last saw %s %s %s (%s) on %s" % ( result[0], deltastring, deltadesc, timechanged, result[3]) else: message = "I last saw %s %s %s (%s) saying \"%s\"" % ( result[0], deltastring, deltadesc, timechanged, result[2]) return "%s%s" % (message, self.lastquit(result[1], searchingfor))