42 lines
No EOL
1.2 KiB
Python
42 lines
No EOL
1.2 KiB
Python
from urllib.request import Request, urlopen
|
|
|
|
import json
|
|
|
|
from .server import Server
|
|
from .cpu import CPU
|
|
from .hdd import HDD
|
|
|
|
API_URL = "https://www.hetzner.com/a_hz_serverboerse/live_data.json"
|
|
|
|
class SBAPI:
|
|
def __init__(self, endpoint=API_URL, user_agent="SBBot/git (https://kumig.it/kumitterer/serverboerse.git)"):
|
|
self.endpoint = endpoint
|
|
self.user_agent = user_agent
|
|
|
|
def fetch(self):
|
|
request = Request(self.endpoint, headers={"User-Agent": self.user_agent})
|
|
response = urlopen(request)
|
|
return json.load(response)
|
|
|
|
def get_servers(self):
|
|
data = self.fetch()
|
|
|
|
for server in data["server"]:
|
|
yield Server(
|
|
server["key"],
|
|
server["name"],
|
|
CPU(
|
|
server["cpu"],
|
|
server["cpu_benchmark"],
|
|
server["cpu_count"]
|
|
),
|
|
server["ram"],
|
|
server["price"],
|
|
HDD(
|
|
server["hdd_size"],
|
|
server["hdd_count"]
|
|
),
|
|
server["next_reduce_timestamp"],
|
|
server["datacenter"][0],
|
|
server["freetext"]
|
|
) |