|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
#!/usr/bin/env python |
|
|
|
|
#!/usr/bin/env python3 |
|
|
|
|
import requests, json |
|
|
|
|
import xml.etree.ElementTree as xml |
|
|
|
|
|
|
|
|
@ -8,6 +8,8 @@ out = {}
|
|
|
|
|
d = xml.fromstring(r.text) |
|
|
|
|
assert d.tag == "inspircdstats" |
|
|
|
|
|
|
|
|
|
with open("blacklist", "r") as f: |
|
|
|
|
BLACKLIST = f.read().splitlines() |
|
|
|
|
|
|
|
|
|
def define(name, xps, vfilter=lambda x: x): |
|
|
|
|
global out |
|
|
|
@ -17,7 +19,7 @@ def define(name, xps, vfilter=lambda x: x):
|
|
|
|
|
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( |
|
|
|
@ -35,15 +37,17 @@ for schannel in schannels:
|
|
|
|
|
and channel["topic"] != "No topic set" |
|
|
|
|
): |
|
|
|
|
channel["topic"] = "Topic hidden" |
|
|
|
|
if channel["name"] == "#secret-sudoers": |
|
|
|
|
# no stat output for #secret-sudoers! it's a sekrit club of the ~team sysadmins! |
|
|
|
|
if channel["name"] in BLACKLIST: |
|
|
|
|
# skip channels in the blacklist |
|
|
|
|
continue |
|
|
|
|
channel["webchatlink"] = "https://web.tilde.chat/?join=" + channel["name"].lstrip( |
|
|
|
|
"#" |
|
|
|
|
) |
|
|
|
|
channels.append(channel) |
|
|
|
|
|
|
|
|
|
channels.sort(key=lambda x: x["name"].lower()) |
|
|
|
|
out["channels"] = channels |
|
|
|
|
|
|
|
|
|
# print([x.text for x in d.findall("./channellist/channel/channeltopic/topictext")]) |
|
|
|
|
with open("/var/www/tilde.chat/stats.json", "w") as f: |
|
|
|
|
json.dump(out, f) |
|
|
|
|