Add realtime data

This commit is contained in:
sqozz 2021-03-24 16:40:17 +01:00
parent 90a5b9b628
commit 7cd3a49f6d
1 changed files with 26 additions and 5 deletions

View File

@ -3,7 +3,9 @@ from bottle import route, run, static_file, template
from os import listdir from os import listdir
from os.path import join as pathjoin from os.path import join as pathjoin
from random import random, choice from random import random, choice
from mcrcon import MCRcon
import configparser import configparser
import re
# echo -n "["; ls | xargs -I{} echo -n \"{}\",; echo "]" # echo -n "["; ls | xargs -I{} echo -n \"{}\",; echo "]"
BG_IMAGES = listdir("./static/img/background") BG_IMAGES = listdir("./static/img/background")
@ -19,11 +21,8 @@ news = """
@route("/") @route("/")
def index(): def index():
return template("html/index.html", **{"player_count": int(random()*20), "max_players": 20, "news": news}) players = currentPlayerData()
return template("html/index.html", **{"player_count": players["count"]["current"] , "max_players": players["count"]["max"], "news": news})
@route("/request")
def request_whitelist():
return "ok"
@route("/img/bg.png") @route("/img/bg.png")
def random_bg_image(): def random_bg_image():
@ -42,6 +41,28 @@ def random_bg_image():
def callback(path): def callback(path):
return static_file(path, root="static") return static_file(path, root="static")
def currentPlayerData():
player = {}
with MCRcon(CONFIG["mcrcon"]["host"], CONFIG["mcrcon"]["password"], port=int(CONFIG["mcrcon"]["port"])) as mcr:
resp = mcr.command("list uuids")
resp = resp.split(":")
player_list = resp[1].strip().split(",")
player_list = list(map(lambda x: x.strip(), player_list))
count_regex = re.match("There are ([0-9]+) of a max of ([0-9]+) players online", resp[0])
num_players = count_regex.group(1)
max_players = count_regex.group(2)
player["count"] = {}
player["count"]["current"] = num_players
player["count"]["max"] = max_players
player["players"] = []
for p in player_list:
data = p.split(" ")
name = data[0].strip()
uuid = data[1].strip().replace("(", "").replace(")", "")
player["players"].append({"name": name, "uuid": uuid})
return player
def parseConfig(): def parseConfig():
config = configparser.ConfigParser() config = configparser.ConfigParser()
config.read("config.ini") config.read("config.ini")