Improvements to xon.py
PEP8 compliance improvements and general linting.
This commit is contained in:
parent
bbe1cc6f93
commit
4801984302
51
xon.py
51
xon.py
|
@ -1,16 +1,18 @@
|
|||
#!/bin/python3
|
||||
'''
|
||||
AGPLv3
|
||||
Created by smolsheep
|
||||
Please don't flood the API.
|
||||
'''
|
||||
|
||||
# AGPLv3
|
||||
# Created by smolsheep
|
||||
# Please don't flood the API.
|
||||
|
||||
import json, http.client
|
||||
import json
|
||||
import http.client
|
||||
from urllib import request
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
|
||||
# Link to get json from
|
||||
xon_api = "https://xonotic.lifeisabug.com/endpoint/json"
|
||||
XON_API = "https://xonotic.lifeisabug.com/endpoint/json"
|
||||
|
||||
# Create table
|
||||
console = Console()
|
||||
|
@ -24,7 +26,7 @@ servlist.add_column("IP", justify="left", min_width=22)
|
|||
|
||||
# Request json from xon_api
|
||||
try:
|
||||
response = request.urlopen(xon_api)
|
||||
response = request.urlopen(XON_API)
|
||||
rawdata = response.read()
|
||||
except http.client.IncompleteRead as r:
|
||||
# This seems to always trigger.
|
||||
|
@ -37,42 +39,43 @@ for rserv in data["server"]:
|
|||
srv = data["server"][rserv]
|
||||
if 0 < srv["numplayers"]:
|
||||
unsorted[srv["name"]] = {
|
||||
"num": srv["numplayers"],
|
||||
"num": srv["numplayers"],
|
||||
"max": srv["maxplayers"],
|
||||
"name": srv["realname"],
|
||||
"location": srv["geo"],
|
||||
"modes": {0:srv["mode"], 1:srv["mode2"]},
|
||||
"modes": {0: srv["mode"], 1: srv["mode2"]},
|
||||
"map": srv["map"],
|
||||
"ip": srv["address"]
|
||||
}
|
||||
|
||||
# Sort by number of players
|
||||
sorted = 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:
|
||||
s = sorted[server]
|
||||
num= s["num"]
|
||||
max = s["max"]
|
||||
if max == num:
|
||||
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 (max/3) < num :
|
||||
if (maxplayer/3) < num:
|
||||
s["countstr"] = f"[bold green]{num}[/bold green]"
|
||||
else:
|
||||
s["countstr"] = f"{num}"
|
||||
|
||||
main = s["modes"][0]
|
||||
min = s["modes"][1]
|
||||
minplayer = s["modes"][1]
|
||||
if "DUEL" == s["modes"][0]:
|
||||
modecolor = "bright_red"
|
||||
s["modestr"] = f"[bold {modecolor}]{main}[/bold {modecolor}]"
|
||||
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}]"
|
||||
MODECOLOR = "bright_cyan"
|
||||
s["modestr"] = f"[bold {MODECOLOR}]{main}[/bold {MODECOLOR}]"
|
||||
else:
|
||||
modecolor = "dark_white"
|
||||
s["modestr"] = f"[bold {modecolor}]{main}[/bold {modecolor}]"
|
||||
|
||||
MODECOLOR = "dark_white"
|
||||
s["modestr"] = f"[bold {MODECOLOR}]{main}[/bold {MODECOLOR}]"
|
||||
|
||||
servlist.add_row(
|
||||
s["location"],
|
||||
s["name"],
|
||||
|
|
Loading…
Reference in a new issue