import socket from flask import Flask, jsonify app = Flask(__name__) MC_HOST = "hiram.services" MC_PORTS = (25565, 25566,) HANDSHAKE = bytearray([0xFE, 0x01]) @app.route("/") def status(): for port in MC_PORTS: try: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.settimeout(5) sock.connect((MC_HOST, port)) sock.settimeout(None) sock.send(HANDSHAKE) raw_data = sock.recv(512) if raw_data is not None and raw_data != "": version, motd, current_players, max_players = [d.replace("\x00", "") for d in raw_data.decode("cp437").split("\x00\x00\x00")[2:]] return jsonify({ "online": True, "data": { "version": version, "motd": motd, "currentPlayers": current_players, "maxPlayers": max_players, }, }) except: continue return jsonify({ "online": False, "data": None, }) if __name__ == "__main__": app.run("0.0.0.0", 5000, debug=True)