Add files via upload

This commit is contained in:
Astatin3
2023-08-27 10:13:51 -06:00
committed by GitHub
parent ce6416c2b2
commit c81d97fc18
+117
View File
@@ -0,0 +1,117 @@
import io
import math
import base64
import sys
import re
import PIL
from time import sleep
from threading import Thread
from PIL import Image
import operator
from collections import defaultdict
from mcstatus import JavaServer
imgsize = (16,16)
sleeptime = 0.1
nullimg = b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAaklEQVQ4T62TWw7AIAgEl/sf2qoRY4ywa1tD/JvhoRjGKUAN/RhQY1y3sKdpEltht2Z17Mmm4A3cW3AjE+yVTk4RnNqUBdGMJEE2YCpgr5MKGNymHwoUOBSo8FGw/j72J1LBDfzPMn1d5wfNZUf5qKNxAQAAAABJRU5ErkJggg=="
def img2ascii(icon):
img = Image.open(io.BytesIO(base64.b64decode(icon)))
img = img.resize(imgsize)
imageSizeW, imageSizeH = img.size
asciiimg = []
for i in range(0, imageSizeW):
curline = ""
for j in range(0, imageSizeH):
pixVal = img.getpixel((j, i))
# if len(pixVal) != 4 or pixVal[3] == 0:
# symbol = " "
# else:
# symbol = "██"
curline += (f"\033[38;2;{pixVal[0]};{pixVal[1]};{pixVal[2]}m██")
#curline += colored(symbol, curcolor[3])
asciiimg.append(curline+"\033[38;2;255;255;255m > ")
return asciiimg
def scanip(ip):
try:
#print(f"Scanning IP: {ip}")
server = JavaServer.lookup(ip)
status = server.status()
except:
#print(f"Error: {ip}")
return False
#print(status.icon)
if status.icon == None:
b64img = nullimg
else:
b64img = status.icon[22:]
ascii = img2ascii(b64img)
ver = status.version
players = status.players
motdtxt = status.motd.to_plain()
motd = ["", ""]
if "\n" in motdtxt:
split = motdtxt.split("\n")
motd[0] = split[0]
motd[1] = split[1]
else:
motd[0] = motdtxt
for ln in range(0,imgsize[1],1):
line = ascii[ln]
match ln:
case 0:
line += f"IP: {ip}"
case 1:
line += f"Latency: {math.ceil(status.latency)}ms"
case 2:
line += f"P: {ver.protocol}, V: {ver.name}"
case 3:
line += f"{players.online}/{players.max} Players"
case 5:
line += f"{motd[0]}"
case 6:
line += f"{motd[1]}"
print(line)
print("\n")
return True
threads = []
if sys.argv[1] == "-p":
if not scanip(sys.argv[2]):
print("Server not online")
elif sys.argv[1] == "-f":
with open(sys.argv[2]) as file:
for ip in file:
#print(f"Scanning IP: {ip}")
thread = Thread(target = scanip, args = (ip.strip(), ))
thread.start()
threads.append(thread)
sleep(sleeptime)
scanip(sys.argv[1])
for thread in threads:
thread.join()
else:
print("Usage:\n"+\
"srvstatus.py -p IP\n"+\
"srvstatus.py -f FILE")