Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json, sys, os, math
- from pprint import pprint
- def fixMem(data, key):
- if not key in data:
- return
- mem = data[key]
- if not 'MB' in mem:
- data[key] = '%dMB' % int(math.ceil(int(mem) / 1024.0 / 1024.0 / 256.0) * 256)
- else:
- data[key] = '%dMB' % int(math.ceil(int(mem[0:-2]) / 256.0) * 256)
- def pad(data, key):
- if not key in data:
- return
- ret = {}
- max = 0
- for item in data[key]:
- if len(str(item)) > max: max = len(str(item))
- for item in data[key]:
- ret[str(item).rjust(max, ' ')] = data[key][item]
- data[key] = ret
- f = open('clients.json').readlines()
- data = {}
- x = 1
- for line in f:
- j = json.loads(line)
- for item in j:
- if item == '_id':
- continue
- if not item in data:
- data[item] = {}
- if item == 'memoryMax': fixMem(j, 'memoryMax')
- if item == 'memoryTotal': fixMem(j, 'memoryTotal')
- if item == 'memoryFree': fixMem(j, 'memoryFree')
- if item == 'openGlVersion':
- j['openGlVersion'] = j['openGlVersion'].split(' ')[0][0:3]
- if item == 'playersSeen':
- if not 'total' in data['playersSeen']:
- data['playersSeen']['total'] = 0
- data['playersSeen']['average'] = 0
- c = int(j['playersSeen'])
- data['playersSeen']['total'] += c
- if c < 1000: c = math.ceil(c / 100.0) * 100
- else: c = math.ceil(c / 1000.0) * 1000
- j['playersSeen'] = int(c)
- if item == 'playersCurrent':
- if not 'total' in data['playersCurrent']:
- data['playersCurrent']['total'] = 0
- data['playersCurrent']['average'] = 0
- c = int(j['playersCurrent'])
- data['playersCurrent']['total'] += c
- if c < 100: c = math.ceil(c / 10.0) * 10
- else: c = math.ceil(c / 100.0) * 100
- j['playersCurrent'] = int(c)
- if item == 'playersMax':
- if not 'total' in data[item]:
- data[item]['total'] = 0
- data[item]['average'] = 0
- c = int(j[item])
- data[item]['total'] += c
- if c < 100: c = math.ceil(c / 10.0) * 10
- else: c = math.ceil(c / 100.0) * 100
- j[item] = int(c)
- if item == 'osVersion' and 'osName' in j:
- os = j['osName']
- if not os in data[item]:
- data[item][os] = {}
- if not j[item] in data[item][os]:
- data[item][os][j[item]] = 1
- else:
- data[item][os][j[item]] += 1
- else:
- if not j[item] in data[item]:
- data[item][j[item]] = 1
- else:
- data[item][j[item]] += 1
- print "%d / %d (%0.0f%%)" % (x, len(f), int(math.floor((x / float(len(f))) * 100.0))), "\r",
- sys.stdout.flush()
- x += 1
- print ""
- if 'playersSeen' in data:
- data['playersSeen']['average'] = int(data['playersSeen']['total'] / len(f))
- if 'playersCurrent' in data:
- data['playersCurrent']['average'] = int(data['playersCurrent']['total'] / len(f))
- if 'playersMax' in data:
- data['playersMax']['average'] = int(data['playersMax']['total'] / len(f))
- data['playersMax'].pop('total')
- pad(data, 'memoryMax')
- pad(data, 'memoryTotal')
- pad(data, 'memoryFree')
- pad(data, 'playersSeen')
- pad(data, 'playersCurrent')
- pad(data, 'playersMax')
- pprint(data)
- five = 0
- total = 0
- for ver in data['javaVersion']:
- if ver[0:3] == '1.5':
- five += data['javaVersion'][ver]
- total += data['javaVersion'][ver]
- print 'Java 5 userbase: %d/%d (%0.000f%%)' % (five, total, float(five) / float(total) * 100.0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement