diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..497d582 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +stats.json diff --git a/gen_stats b/gen_stats new file mode 100755 index 0000000..8d439c2 --- /dev/null +++ b/gen_stats @@ -0,0 +1,27 @@ +#!/usr/bin/env python +import requests, json +import xml.etree.ElementTree as xml + +r = requests.get("http://localhost:8081/stats") +r.raise_for_status() +out = {} +d = xml.fromstring(r.text) +assert d.tag == "inspircdstats" +def define(name,xps,vfilter=lambda x: x): + global out + out[name] = vfilter(d.findall(xps)[0].text) +define("usercount","./general/usercount",int) +define("channelcount","./general/channelcount",int) +schannels = d.findall("./channellist/channel") +#print(len(schannels)) +channels = [] +for schannel in schannels: + channel = dict(name=schannel.findall("channelname")[0].text,usercount=int(schannel.findall("usercount")[0].text)) + channel["topic"] = schannel.findall("./channeltopic/topictext")[0].text if schannel.findall("./channeltopic/topictext")[0].text is not None else "No topic set" + if channel["name"]=="#sudoers": # no stat output for #sudoers! it's a sekrit club of the ~team sysadmins! + continue + channels.append(channel) +out["channels"]=channels +#print([x.text for x in d.findall("./channellist/channel/channeltopic/topictext")]) +with open("stats.json","w") as f: + json.dump(out,f)