General improvements to xon.py
This commit is contained in:
parent
fc775120fd
commit
fcc6765a16
82
xon.py
82
xon.py
|
@ -1,9 +1,9 @@
|
|||
#!/bin/python3
|
||||
'''
|
||||
"""
|
||||
AGPLv3
|
||||
Created by smolsheep
|
||||
Please don't flood the API.
|
||||
'''
|
||||
"""
|
||||
|
||||
import json
|
||||
import http.client
|
||||
|
@ -16,13 +16,13 @@ XON_API = "https://xonotic.lifeisabug.com/endpoint/json"
|
|||
|
||||
# Create table
|
||||
console = Console()
|
||||
servlist = Table(show_header=True, expand=True, header_style="bold blue")
|
||||
servlist.add_column("", justify="right", max_width=6)
|
||||
servlist.add_column("Server", justify="left", ratio=0.1, no_wrap=True)
|
||||
servlist.add_column("Mode", justify="center", max_width=6)
|
||||
servlist.add_column("", justify="center", ratio=0.05)
|
||||
servlist.add_column("", justify="right", max_width=6)
|
||||
servlist.add_column("IP", justify="left", min_width=22)
|
||||
serv_list = Table(show_header=True, expand=True, header_style="bold blue")
|
||||
serv_list.add_column("", justify="right", max_width=6)
|
||||
serv_list.add_column("Server", justify="left", ratio=0.1, no_wrap=True)
|
||||
serv_list.add_column("Mode", justify="center", max_width=6)
|
||||
serv_list.add_column("", justify="center", ratio=0.05)
|
||||
serv_list.add_column("", justify="right", max_width=6)
|
||||
serv_list.add_column("IP", justify="left", min_width=22)
|
||||
|
||||
# Request json from xon_api
|
||||
try:
|
||||
|
@ -45,47 +45,45 @@ for rserv in data["server"]:
|
|||
"location": srv["geo"],
|
||||
"modes": {0: srv["mode"], 1: srv["mode2"]},
|
||||
"map": srv["map"],
|
||||
"ip": srv["address"]
|
||||
"ip": srv["address"],
|
||||
}
|
||||
|
||||
# Sort by number of players
|
||||
sorted_servers = dict(sorted(
|
||||
unsorted.items(),
|
||||
key=lambda pcount: pcount[1]["num"],
|
||||
reverse=True))
|
||||
sorted_servers = dict(
|
||||
sorted(unsorted.items(), key=lambda pcount: pcount[1]["num"], reverse=True)
|
||||
)
|
||||
|
||||
# Fill out table and do operations to colorize the data
|
||||
for server in sorted_servers:
|
||||
s = sorted_servers[server]
|
||||
num = s["num"]
|
||||
maxplayer = s["max"]
|
||||
if maxplayer == num:
|
||||
s["countstr"] = f"[bold bright_red]{num}[/bold bright_red]"
|
||||
if (maxplayer/3) < num:
|
||||
s["countstr"] = f"[bold green]{num}[/bold green]"
|
||||
for _, server in sorted_servers.items():
|
||||
# Colorize playercount
|
||||
if server["max"] == server["num"]:
|
||||
COUNT_COLOR = "bold bright_red"
|
||||
if (server["max"] / 3) < server["num"]:
|
||||
COUNT_COLOR = "bold green"
|
||||
else:
|
||||
s["countstr"] = f"{num}"
|
||||
|
||||
main = s["modes"][0]
|
||||
minplayer = s["modes"][1]
|
||||
if "DUEL" == s["modes"][0]:
|
||||
MODECOLOR = "bright_red"
|
||||
s["modestr"] = f"[bold {MODECOLOR}]{main}[/bold {MODECOLOR}]"
|
||||
elif "CA" == s["modes"][0]:
|
||||
MODECOLOR = "bright_cyan"
|
||||
s["modestr"] = f"[bold {MODECOLOR}]{main}[/bold {MODECOLOR}]"
|
||||
COUNT_COLOR = "text"
|
||||
# Colorize modes
|
||||
if "DUEL" == server["modes"][0]:
|
||||
MODE_COLOR = "bright_red"
|
||||
elif "CA" == server["modes"][0]:
|
||||
MODE_COLOR = "bright_cyan"
|
||||
else:
|
||||
MODECOLOR = "dark_white"
|
||||
s["modestr"] = f"[bold {MODECOLOR}]{main}[/bold {MODECOLOR}]"
|
||||
MODE_COLOR = "dark_white"
|
||||
|
||||
servlist.add_row(
|
||||
s["location"],
|
||||
s["name"],
|
||||
s["modestr"],
|
||||
s["map"],
|
||||
s["countstr"],
|
||||
s["ip"]
|
||||
server["playercount"] = "[{0}]{1}[/{0}]".format(COUNT_COLOR, server["num"])
|
||||
|
||||
server["formatted_mode"] = "[bold {0}]{1}[/bold {0}]".format(
|
||||
MODE_COLOR, server["modes"][0]
|
||||
)
|
||||
|
||||
serv_list.add_row(
|
||||
server["location"],
|
||||
server["name"],
|
||||
server["formatted_mode"],
|
||||
server["map"],
|
||||
server["playercount"],
|
||||
server["ip"],
|
||||
)
|
||||
|
||||
console.clear()
|
||||
console.print(servlist)
|
||||
console.print(serv_list)
|
||||
|
|
Loading…
Reference in New Issue