hungerlib 4.25.dev3__tar.gz → 4.25.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hungerlib-4.25.dev3/src/hungerlib.egg-info → hungerlib-4.25.dev5}/PKG-INFO +1 -1
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/pyproject.toml +1 -1
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/bridgeclient.py +18 -3
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/minecraft.py +7 -20
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5/src/hungerlib.egg-info}/PKG-INFO +1 -1
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/LICENSE +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/README.md +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/setup.cfg +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/backups.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/command.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/databases.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/filemanager.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/schedule.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/api/startup.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/configloader.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/client.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/email_templates/restart.html +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/manager.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/message.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/messagerouter.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/panel.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/servers/generic.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/buffer.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/convert.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/exceptions.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/time.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/utils/utils.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/validator.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/__init__.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/client.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/webhook/server.py +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/SOURCES.txt +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/dependency_links.txt +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/requires.txt +0 -0
- {hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib.egg-info/top_level.txt +0 -0
|
@@ -46,20 +46,31 @@ class Stream:
|
|
|
46
46
|
self.timestamped_stream[ts] = clean
|
|
47
47
|
|
|
48
48
|
def connect(self, keepalive: int = 15):
|
|
49
|
+
"""
|
|
50
|
+
Connect to the SSE stream. Optionally request recent history lines by
|
|
51
|
+
passing `history=<n>` which will add the query parameter `?history=n`.
|
|
52
|
+
"""
|
|
53
|
+
def _build_url_with_history(url: str, history: int | None):
|
|
54
|
+
if not history:
|
|
55
|
+
return url
|
|
56
|
+
sep = '&' if '?' in url else '?'
|
|
57
|
+
return f"{url}{sep}history={history}"
|
|
58
|
+
|
|
49
59
|
if self._thread and self._thread.is_alive():
|
|
50
60
|
return
|
|
51
61
|
|
|
52
62
|
self._stop_event = threading.Event()
|
|
53
63
|
self._session = requests.Session()
|
|
54
64
|
|
|
55
|
-
def _run():
|
|
65
|
+
def _run(history: int | None = None):
|
|
56
66
|
history_phase = True
|
|
57
67
|
history_lines = []
|
|
58
68
|
history_deadline = time.time() + keepalive
|
|
59
69
|
|
|
70
|
+
request_url = _build_url_with_history(self.url, history)
|
|
60
71
|
try:
|
|
61
72
|
with self._session.get(
|
|
62
|
-
|
|
73
|
+
request_url,
|
|
63
74
|
headers=self.headers,
|
|
64
75
|
stream=True
|
|
65
76
|
) as r:
|
|
@@ -105,6 +116,7 @@ class Stream:
|
|
|
105
116
|
|
|
106
117
|
self._thread = threading.Thread(
|
|
107
118
|
target=_run,
|
|
119
|
+
kwargs={"history": None},
|
|
108
120
|
name='HungerBridgeStream',
|
|
109
121
|
daemon=True
|
|
110
122
|
)
|
|
@@ -131,7 +143,10 @@ class Stream:
|
|
|
131
143
|
@staticmethod
|
|
132
144
|
def sanitize(line: str) -> str:
|
|
133
145
|
ansi_re = re.compile(r'\x1b\[[0-9;]*m')
|
|
134
|
-
|
|
146
|
+
# remove ANSI sequences, unescape server-escaped newlines, and strip
|
|
147
|
+
clean = ansi_re.sub('', line)
|
|
148
|
+
clean = clean.replace('\\n', '\n').replace('\\r', '\r')
|
|
149
|
+
return clean.rstrip()
|
|
135
150
|
|
|
136
151
|
@staticmethod
|
|
137
152
|
def extractTimestamp(line: str):
|
|
@@ -36,15 +36,14 @@ class MinecraftServer(GenericServer):
|
|
|
36
36
|
self.bridge = BridgeClient(bridge_url, bridge_token, history_handler=history_handler, newline_handler=newline_handler)
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
# basic
|
|
40
|
-
|
|
41
|
-
def bridge_version(self) -> str | None:
|
|
39
|
+
# basic getter methods
|
|
40
|
+
def getBridgeVersion(self) -> str | None:
|
|
42
41
|
return self.bridge.getVersion()
|
|
43
|
-
|
|
44
|
-
def
|
|
42
|
+
|
|
43
|
+
def getVersion(self) -> str | None:
|
|
45
44
|
return self.bridge.getMinecraftVersion()
|
|
46
|
-
|
|
47
|
-
def
|
|
45
|
+
|
|
46
|
+
def getPlatform(self) -> str | None:
|
|
48
47
|
return self.bridge.getPlatform()
|
|
49
48
|
|
|
50
49
|
|
|
@@ -57,15 +56,7 @@ class MinecraftServer(GenericServer):
|
|
|
57
56
|
else:
|
|
58
57
|
raise InvalidModeError(f"Invalid mode: '{mode}'")
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
def player_count(self) -> int:
|
|
62
|
-
return self.getPlayers(mode='count') or 0
|
|
63
|
-
@property
|
|
64
|
-
def player_list(self) -> list[str]:
|
|
65
|
-
return self.getPlayers('list') or []
|
|
66
|
-
|
|
67
|
-
@property
|
|
68
|
-
def max_players(self) -> int:
|
|
59
|
+
def getMaxPlayers(self) -> int:
|
|
69
60
|
'''
|
|
70
61
|
Runs the 'list' command and extracts the max player count.
|
|
71
62
|
Expected format:
|
|
@@ -99,10 +90,6 @@ class MinecraftServer(GenericServer):
|
|
|
99
90
|
return None
|
|
100
91
|
return round(value, rounding) if rounding is not None else value
|
|
101
92
|
|
|
102
|
-
@property
|
|
103
|
-
def tps(self) -> float | None:
|
|
104
|
-
return self.getTPS()
|
|
105
|
-
|
|
106
93
|
|
|
107
94
|
# commands
|
|
108
95
|
def sendConsoleCommand(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hungerlib-4.25.dev3 → hungerlib-4.25.dev5}/src/hungerlib/email/email_templates/restart.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|