summaryrefslogtreecommitdiff
path: root/python-minestat.spec
blob: a22d280e8ab8878ef61155a6b2449004cd375bc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
%global _empty_manifest_terminate_build 0
Name:		python-minestat
Version:	2.6.1
Release:	1
Summary:	A Minecraft server status checker
License:	GNU General Public License v3 (GPLv3)
URL:		https://github.com/FragLand/minestat
Source0:	https://mirrors.aliyun.com/pypi/web/packages/4d/5f/229603aaa96b27f23450fa4a6925776596200874d1190d0b6f59c095a2bb/minestat-2.6.1.tar.gz
BuildArch:	noarch

Requires:	python3-dnspython

%description
MineStat is a Minecraft server status checker library for Python, supporting a wide range of Minecraft servers:
- Java Edition since Minecraft version Beta 1.8 (September 2011),
- Bedrock Edition starting with Minecraft version 0.14 (March 2018), maybe earlier.
Supports [Minecraft SRV record resolution](https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server#The_SRV_record),
which requires the package [`dnspython`](https://pypi.org/project/dnspython/).
This mechanism allows server operators to use a custom port or host without the player having to type it.
One common server utilizing this feature example is `2b2t`: The actual server is at `connect.2b2t.org`, while users simply use `2bt2.org`.
MineStat supports querying both, if `dnspython` is installed.
### Python example
[![PyPI](https://img.shields.io/pypi/v/minestat?color=green&label=PyPI%20package&style=plastic)](https://pypi.org/project/minestat/)
To use the PyPI package: `pip install minestat`
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land', 25565)
print('Minecraft server status of %s on port %d:' % (ms.address, ms.port))
if ms.online:
  print('Server is online running version %s with %s out of %s players.' % (ms.version, ms.current_players, ms.max_players))
  # Bedrock-specific attribute:
  if ms.gamemode:
    print('Game mode: %s' % ms.gamemode)
  print('Message of the day: %s' % ms.motd)
  print('Message of the day without formatting: %s' % ms.stripped_motd)
  print('Latency: %sms' % ms.latency)
  print('Connected using protocol: %s' % ms.slp_protocol)
else:
  print('Server is offline!')
```
#### Available parameters
The following parameters exist for the `MineStat` object:
- `address`: str,
  - Hostname or IP address of the Minecraft server.
- `port`: int = 0,
  - Optional port of the Minecraft server. Defaults to auto detection (25565 for Java Edition, 19132 for Bedrock/MCPE).
- `timeout`: int = DEFAULT_TIMEOUT,
  - Optional timeout in seconds for each connection attempt. Defaults to 5 seconds.
- `query_protocol`: SlpProtocols = SlpProtocols.ALL,
  - Optional protocol to use. See minestat.SlpProtocols for available choices. Defaults to auto detection.
- `resolve_srv`: Optional[bool] = None
  - Optional, whether to resolve Minecraft SRV records. Requires dnspython to be installed.
Minimal example with port auto-detection:
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land')
print(f"Is online? {ms.online=}")
```
#### Available attributes
The following attributes are available on the `MineStat` object:
- `online`: bool
  - Whether the server is online and reachable with the specified protocol. True if online.
- `address`: str
  - Addresss (domain or IP-address) of the server to connect to.
- `port`: int
  - Port of the server to connect to.
- `version`: str
  - String describing the server Minecraft version. In vanilla servers the version number (e.g. 1.18.2),
    may be modified by the server (e.g. by ViaVersion). On Bedrock servers includes the Edition (MCEE/MCPE)
    and the server info.
- `motd`: str
  - The raw MOTD returned by the server. May include formatting codes (§) or JSON chat components.
  - Examples (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890):
    - With formatting codes: `§6~~§r §3§lM§7§lA§2§lG§9§lI§4§lC§r1.16 v3§6~~§r`
    - JSON chat components: `{"extra": [{"color": "gold", "text": "~~"}, {"text": " "}, {"bold": true, "color": "dark_aqua", "text": "M"}, {"bold": true, "color": "gray", "text": "A"}, {"bold": true, "color": "dark_green", "text": "G"}, {"bold": true, "color": "blue", "text": "I"}, {"bold": true, "color": "dark_red", "text": "C"}, {"text": "1.16 v3"}, {"color": "gold", "text": "~~"}], "text": ""}`
- `stripped_motd`: str
  - The MOTD with all formatting removed ("human readable").
  - Example (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890)
    - Above MOTD example: `~~ MAGIC1.16 v3~~`
- `current_players`: int
  - Count of players currently online on the server.
- `max_players`: int
  - Count of maximum allowed players as reported by the server.
- `latency`: int
  - Time in milliseconds the server took to respond to the information request.
- `slp_protocol`: minestat.SlpProtocol
  - Protocol used to retrieve information from the server.
- `connection_status`: minestat.ConnStatus
  - Status of connection ("SUCCESS", "CONNFAIL", "TIMEOUT", or "UNKNOWN").
- `srv_record`: bool
  - wether the server has a SRV record.
#### Extra attributes
The following attributes are not availabe with every protocol.
- `player_list`: list[str] (***UT3/GS4 Query specific***)
  - List of online players, may be empty even if `current_players` is over 0.
- `plugins`: list[str] (***UT3/GS4 Query specific***)
  - List of plugins returned by the Query protcol.
- `map`: str (***UT3/GS4 Query specific***)
  - The name of the map the server is running on.
- `gamemode`: str (***Bedrock specific***)
  - Gamemode currently active on the server (Creative/Survival/Adventure).
- `favicon_b64`: str (***SLP 1.7/JSON specific***)
  - Base64-encoded favicon.
- `favicon`: str (***SLP 1.7/JSON specific***)
  - Decoded favicon data.

%package -n python3-minestat
Summary:	A Minecraft server status checker
Provides:	python-minestat
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-minestat
MineStat is a Minecraft server status checker library for Python, supporting a wide range of Minecraft servers:
- Java Edition since Minecraft version Beta 1.8 (September 2011),
- Bedrock Edition starting with Minecraft version 0.14 (March 2018), maybe earlier.
Supports [Minecraft SRV record resolution](https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server#The_SRV_record),
which requires the package [`dnspython`](https://pypi.org/project/dnspython/).
This mechanism allows server operators to use a custom port or host without the player having to type it.
One common server utilizing this feature example is `2b2t`: The actual server is at `connect.2b2t.org`, while users simply use `2bt2.org`.
MineStat supports querying both, if `dnspython` is installed.
### Python example
[![PyPI](https://img.shields.io/pypi/v/minestat?color=green&label=PyPI%20package&style=plastic)](https://pypi.org/project/minestat/)
To use the PyPI package: `pip install minestat`
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land', 25565)
print('Minecraft server status of %s on port %d:' % (ms.address, ms.port))
if ms.online:
  print('Server is online running version %s with %s out of %s players.' % (ms.version, ms.current_players, ms.max_players))
  # Bedrock-specific attribute:
  if ms.gamemode:
    print('Game mode: %s' % ms.gamemode)
  print('Message of the day: %s' % ms.motd)
  print('Message of the day without formatting: %s' % ms.stripped_motd)
  print('Latency: %sms' % ms.latency)
  print('Connected using protocol: %s' % ms.slp_protocol)
else:
  print('Server is offline!')
```
#### Available parameters
The following parameters exist for the `MineStat` object:
- `address`: str,
  - Hostname or IP address of the Minecraft server.
- `port`: int = 0,
  - Optional port of the Minecraft server. Defaults to auto detection (25565 for Java Edition, 19132 for Bedrock/MCPE).
- `timeout`: int = DEFAULT_TIMEOUT,
  - Optional timeout in seconds for each connection attempt. Defaults to 5 seconds.
- `query_protocol`: SlpProtocols = SlpProtocols.ALL,
  - Optional protocol to use. See minestat.SlpProtocols for available choices. Defaults to auto detection.
- `resolve_srv`: Optional[bool] = None
  - Optional, whether to resolve Minecraft SRV records. Requires dnspython to be installed.
Minimal example with port auto-detection:
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land')
print(f"Is online? {ms.online=}")
```
#### Available attributes
The following attributes are available on the `MineStat` object:
- `online`: bool
  - Whether the server is online and reachable with the specified protocol. True if online.
- `address`: str
  - Addresss (domain or IP-address) of the server to connect to.
- `port`: int
  - Port of the server to connect to.
- `version`: str
  - String describing the server Minecraft version. In vanilla servers the version number (e.g. 1.18.2),
    may be modified by the server (e.g. by ViaVersion). On Bedrock servers includes the Edition (MCEE/MCPE)
    and the server info.
- `motd`: str
  - The raw MOTD returned by the server. May include formatting codes (§) or JSON chat components.
  - Examples (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890):
    - With formatting codes: `§6~~§r §3§lM§7§lA§2§lG§9§lI§4§lC§r1.16 v3§6~~§r`
    - JSON chat components: `{"extra": [{"color": "gold", "text": "~~"}, {"text": " "}, {"bold": true, "color": "dark_aqua", "text": "M"}, {"bold": true, "color": "gray", "text": "A"}, {"bold": true, "color": "dark_green", "text": "G"}, {"bold": true, "color": "blue", "text": "I"}, {"bold": true, "color": "dark_red", "text": "C"}, {"text": "1.16 v3"}, {"color": "gold", "text": "~~"}], "text": ""}`
- `stripped_motd`: str
  - The MOTD with all formatting removed ("human readable").
  - Example (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890)
    - Above MOTD example: `~~ MAGIC1.16 v3~~`
- `current_players`: int
  - Count of players currently online on the server.
- `max_players`: int
  - Count of maximum allowed players as reported by the server.
- `latency`: int
  - Time in milliseconds the server took to respond to the information request.
- `slp_protocol`: minestat.SlpProtocol
  - Protocol used to retrieve information from the server.
- `connection_status`: minestat.ConnStatus
  - Status of connection ("SUCCESS", "CONNFAIL", "TIMEOUT", or "UNKNOWN").
- `srv_record`: bool
  - wether the server has a SRV record.
#### Extra attributes
The following attributes are not availabe with every protocol.
- `player_list`: list[str] (***UT3/GS4 Query specific***)
  - List of online players, may be empty even if `current_players` is over 0.
- `plugins`: list[str] (***UT3/GS4 Query specific***)
  - List of plugins returned by the Query protcol.
- `map`: str (***UT3/GS4 Query specific***)
  - The name of the map the server is running on.
- `gamemode`: str (***Bedrock specific***)
  - Gamemode currently active on the server (Creative/Survival/Adventure).
- `favicon_b64`: str (***SLP 1.7/JSON specific***)
  - Base64-encoded favicon.
- `favicon`: str (***SLP 1.7/JSON specific***)
  - Decoded favicon data.

%package help
Summary:	Development documents and examples for minestat
Provides:	python3-minestat-doc
%description help
MineStat is a Minecraft server status checker library for Python, supporting a wide range of Minecraft servers:
- Java Edition since Minecraft version Beta 1.8 (September 2011),
- Bedrock Edition starting with Minecraft version 0.14 (March 2018), maybe earlier.
Supports [Minecraft SRV record resolution](https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server#The_SRV_record),
which requires the package [`dnspython`](https://pypi.org/project/dnspython/).
This mechanism allows server operators to use a custom port or host without the player having to type it.
One common server utilizing this feature example is `2b2t`: The actual server is at `connect.2b2t.org`, while users simply use `2bt2.org`.
MineStat supports querying both, if `dnspython` is installed.
### Python example
[![PyPI](https://img.shields.io/pypi/v/minestat?color=green&label=PyPI%20package&style=plastic)](https://pypi.org/project/minestat/)
To use the PyPI package: `pip install minestat`
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land', 25565)
print('Minecraft server status of %s on port %d:' % (ms.address, ms.port))
if ms.online:
  print('Server is online running version %s with %s out of %s players.' % (ms.version, ms.current_players, ms.max_players))
  # Bedrock-specific attribute:
  if ms.gamemode:
    print('Game mode: %s' % ms.gamemode)
  print('Message of the day: %s' % ms.motd)
  print('Message of the day without formatting: %s' % ms.stripped_motd)
  print('Latency: %sms' % ms.latency)
  print('Connected using protocol: %s' % ms.slp_protocol)
else:
  print('Server is offline!')
```
#### Available parameters
The following parameters exist for the `MineStat` object:
- `address`: str,
  - Hostname or IP address of the Minecraft server.
- `port`: int = 0,
  - Optional port of the Minecraft server. Defaults to auto detection (25565 for Java Edition, 19132 for Bedrock/MCPE).
- `timeout`: int = DEFAULT_TIMEOUT,
  - Optional timeout in seconds for each connection attempt. Defaults to 5 seconds.
- `query_protocol`: SlpProtocols = SlpProtocols.ALL,
  - Optional protocol to use. See minestat.SlpProtocols for available choices. Defaults to auto detection.
- `resolve_srv`: Optional[bool] = None
  - Optional, whether to resolve Minecraft SRV records. Requires dnspython to be installed.
Minimal example with port auto-detection:
```python
import minestat
ms = minestat.MineStat('minecraft.frag.land')
print(f"Is online? {ms.online=}")
```
#### Available attributes
The following attributes are available on the `MineStat` object:
- `online`: bool
  - Whether the server is online and reachable with the specified protocol. True if online.
- `address`: str
  - Addresss (domain or IP-address) of the server to connect to.
- `port`: int
  - Port of the server to connect to.
- `version`: str
  - String describing the server Minecraft version. In vanilla servers the version number (e.g. 1.18.2),
    may be modified by the server (e.g. by ViaVersion). On Bedrock servers includes the Edition (MCEE/MCPE)
    and the server info.
- `motd`: str
  - The raw MOTD returned by the server. May include formatting codes (§) or JSON chat components.
  - Examples (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890):
    - With formatting codes: `§6~~§r §3§lM§7§lA§2§lG§9§lI§4§lC§r1.16 v3§6~~§r`
    - JSON chat components: `{"extra": [{"color": "gold", "text": "~~"}, {"text": " "}, {"bold": true, "color": "dark_aqua", "text": "M"}, {"bold": true, "color": "gray", "text": "A"}, {"bold": true, "color": "dark_green", "text": "G"}, {"bold": true, "color": "blue", "text": "I"}, {"bold": true, "color": "dark_red", "text": "C"}, {"text": "1.16 v3"}, {"color": "gold", "text": "~~"}], "text": ""}`
- `stripped_motd`: str
  - The MOTD with all formatting removed ("human readable").
  - Example (See https://github.com/FragLand/minestat/issues/84#issuecomment-895375890)
    - Above MOTD example: `~~ MAGIC1.16 v3~~`
- `current_players`: int
  - Count of players currently online on the server.
- `max_players`: int
  - Count of maximum allowed players as reported by the server.
- `latency`: int
  - Time in milliseconds the server took to respond to the information request.
- `slp_protocol`: minestat.SlpProtocol
  - Protocol used to retrieve information from the server.
- `connection_status`: minestat.ConnStatus
  - Status of connection ("SUCCESS", "CONNFAIL", "TIMEOUT", or "UNKNOWN").
- `srv_record`: bool
  - wether the server has a SRV record.
#### Extra attributes
The following attributes are not availabe with every protocol.
- `player_list`: list[str] (***UT3/GS4 Query specific***)
  - List of online players, may be empty even if `current_players` is over 0.
- `plugins`: list[str] (***UT3/GS4 Query specific***)
  - List of plugins returned by the Query protcol.
- `map`: str (***UT3/GS4 Query specific***)
  - The name of the map the server is running on.
- `gamemode`: str (***Bedrock specific***)
  - Gamemode currently active on the server (Creative/Survival/Adventure).
- `favicon_b64`: str (***SLP 1.7/JSON specific***)
  - Base64-encoded favicon.
- `favicon`: str (***SLP 1.7/JSON specific***)
  - Decoded favicon data.

%prep
%autosetup -n minestat-2.6.1

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-minestat -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Thu Jun 08 2023 Python_Bot <Python_Bot@openeuler.org> - 2.6.1-1
- Package Spec generated