__module_name__ = "Uptime" __module_version__ = "0.2" __module_description__ = "foo" import xchat import commands, os def updateRecord(days, hours, minutes, seconds): open(os.path.join(os.environ['HOME'], '.record_uptime'), 'w').write(str(days) + ' ' + str(hours) + ' ' + str(minutes) + ' ' + str(seconds)) def uptime_cb(word, word_eol, userdata): data = commands.getoutput('uptime') users = data[data.find('user')-4:data.find('user')].strip() time = open('/proc/uptime').read() time, junk = map(float, time.strip().split()) days = int(time/60/60/24) time -= days*24*60*60 hours = int(time/60/60) time -= hours*60*60 minutes = int(time/60) time -= minutes*60 seconds = int(time) load = open('/proc/loadavg').read() load = ' '.join(load.strip().split()[:3]) try: record_days, record_hours, record_minutes, record_seconds = map(int, open(os.path.join(os.environ['HOME'], '.record_uptime'), 'r').read().split(' ')) except: updateRecord(days, hours, minutes, seconds) record_days, record_hours, record_minutes, record_seconds = days, hours, minutes, seconds if days > record_days: updateRecord(days, hours, minutes, seconds) record_days, record_hours, record_minutes, record_seconds = days, hours, minutes, seconds elif days == record_days: if hours > record_hours: updateRecord(days, hours, minutes, seconds) record_days, record_hours, record_minutes, record_seconds = days, hours, minutes, seconds elif hours == record_hours: if minutes > record_minutes: updateRecord(days, hours, minutes, seconds) record_days, record_hours, record_minutes, record_seconds = days, hours, minutes, seconds elif minutes == record_minutes: if seconds > record_seconds: updateRecord(days, hours, minutes, seconds) record_days, record_hours, record_minutes, record_seconds = days, hours, minutes, seconds output = '\x03' + '4' + '(Uptime) ' + '\x03' + '07' if days > 0: if days == 1: output += str(days) + ' day ' else: output += str(days) + ' days ' if hours > 0: if hours == 1: output += str(hours) + ' hour ' else: output += str(hours) + ' hours ' if minutes > 0: if minutes == 1: output += str(minutes) + ' minute ' else: output += str(minutes) + ' minutes ' if seconds > 0: if seconds == 1: output += str(seconds) + ' second ' else: output += str(seconds) + ' seconds ' output += '\x03' + '[' + '\x03' + '2' + 'Record: ' + '\x03' + '07' + str(record_days) + 'd ' + str(record_hours) + 'h ' + str(record_minutes) + 'm ' + str(record_seconds) + 's' + '\x03' + ']' + '\x03' + '14' + ' | ' output += '\x03' + '10' + 'Users: ' + '\x03' + '07' + str(users) + '\x03' + '14' + ' | ' output += '\x03' + '10' + 'Load: ' + '\x03' + '07' + str(load) xchat.command('say %s' % (output)) return xchat.EAT_ALL xchat.hook_command("uptime", uptime_cb, help="/UPTIME Sends uptime to current channel")