diff --git a/plugins/system.py b/plugins/system.py index e575acd..a4477f1 100755 --- a/plugins/system.py +++ b/plugins/system.py @@ -1,28 +1,9 @@ -# Plugin by Lukeroge, and neersighted -# Yeah, the code in this sucks. Meh. import os import re -import time -import string import platform import subprocess from util import hook -def replace(text, wordDic): - rc = re.compile('|'.join(map(re.escape, wordDic))) - - def translate(match): - return wordDic[match.group(0)] - return rc.sub(translate, text) - -def checkProc(checked_stats): - status_file = open('/proc/self/status').read() - line_pairs = re.findall(r'^(\w+):\s*(.*)\s*$', status_file, re.M) - status = dict(line_pairs) - checked_stats = checked_stats.split() - stats = '\x02, '.join(key + ': \x02' + status[key] for key in checked_stats) - return stats - @hook.command(autohelp=False) def system(inp): @@ -33,49 +14,52 @@ def system(inp): python_ver = platform.python_version() architecture = '-'.join(platform.architecture()) cpu = platform.machine() - return 'Hostname: \x02%s\x02, Operating System: \x02%s\x02, Python Version:' \ - ' \x02%s %s\x02, Architecture: \x02%s\x02, CPU: \x02%s\x02' % (hostname, - os, python_imp, python_ver, architecture, cpu) + return "Hostname: \x02%s\x02, Operating System: \x02%s\x02, Python " \ + "Version: \x02%s %s\x02, Architecture: \x02%s\x02, CPU: \x02%s" \ + "\x02" % (hostname, os, python_imp, python_ver, architecture, cpu) @hook.command(autohelp=False) def memory(inp): ".memory -- Displays the bot's current memory usage." - if os.name == 'posix': - checked_stats = 'VmRSS VmSize VmPeak VmStk VmData' - memory = checkProc(checked_stats) - pretty_names = {'VmRSS': 'Real Memory', 'VmSize': 'Allocated Memory', 'VmPeak': 'Peak Allocated Memory', 'VmStk': 'Stack Size', 'VmData': 'Heap Size'} - memory = replace(memory, pretty_names) - memory = string.replace(memory, ' kB', '') - memory = memory.split('\x02') - numbers = [memory[i] for i in range(len(memory)) if i % 2 == 1] - memory = [i for i in memory if i not in numbers] - numbers = [str(round(float(i) / 1024, 2)) + ' MB' for i in numbers] - memory = [list(i) for i in zip(memory, numbers)] - memory = sum(memory, []) - memory = '\x02'.join(memory) + if os.name == "posix": + # get process info + status_file = open('/proc/self/status').read() + s = dict(re.findall(r'^(\w+):\s*(.*)\s*$', status_file, re.M)) + # get the data we need and process it + data = s['VmRSS'], s['VmSize'], s['VmPeak'], s['VmStk'], s['VmData'] + data = [int(i.replace(' kB', '')) for i in data] + strings = [str(round(float(i) / 1024, 2)) + ' MB' for i in data] + # prepare the output + out = "Real Memory: \x02%s\x02, Allocated Memory: \x02%s\x02, Peak " \ + "Allocated Memory: \x02%s\x02, Stack Size: \x02%s\x02, Heap " \ + "Size: \x02%s\x02" % (strings[0], strings[1], strings[2], + strings[3], strings[4]) + # return output + return out - elif os.name == 'nt': - cmd = 'tasklist /FI \"PID eq %s\" /FO CSV /NH' % os.getpid() + elif os.name == "nt": + cmd = 'tasklist /FI "PID eq %s" /FO CSV /NH' % os.getpid() out = os.popen(cmd).read() memory = 0 for amount in re.findall(r'([,0-9]+) K', out): memory += int(amount.replace(',', '')) memory = str(round(float(memory) / 1024, 2)) - memory = 'Memory Usage: \x02%s MB\x02' % memory + return "Memory Usage: \x02%s MB\x02" % memory + else: - memory = 'error: operating system not currently supported' - return memory + return "Operating system not currently supported." @hook.command(autohelp=False) def uptime(inp): ".uptime -- Shows the bot's uptime." - up_time = subprocess.check_output('ps -eo pid,etime | grep %s | awk \'{print $2}\'' % os.getpid(), shell=True) - up_time = 'Uptime: \x02' + up_time + '\x02' - return up_time + up = subprocess.check_output("ps -eo pid,etime | grep %s | awk " \ + "'{print $2}'" % os.getpid(), shell=True) + return "Uptime: \x02%s\x02" % up + @hook.command(autohelp=False) def pid(inp): ".pid -- Prints the bot's PID." - return 'PID: \x02%s\x02' % os.getpid() + return "PID: \x02%s\x02" % os.getpid()