nonebot-plugin-l4d2-server 1.1.1__py3-none-any.whl → 1.1.2__py3-none-any.whl
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.
- nonebot_plugin_l4d2_server/config.py +82 -45
- nonebot_plugin_l4d2_server/l4_help/__init__.py +1 -1
- nonebot_plugin_l4d2_server/l4_image/convert.py +0 -69
- nonebot_plugin_l4d2_server/l4_image/html_img.py +35 -17
- nonebot_plugin_l4d2_server/l4_image/image_tools.py +1 -104
- nonebot_plugin_l4d2_server/l4_image/img/back_img/background.jpg +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/normal.html +75 -167
- nonebot_plugin_l4d2_server/l4_image/img/template/style.css +264 -0
- nonebot_plugin_l4d2_server/l4_request/draw_msg.py +1 -18
- {nonebot_plugin_l4d2_server-1.1.1.dist-info → nonebot_plugin_l4d2_server-1.1.2.dist-info}/METADATA +2 -3
- nonebot_plugin_l4d2_server-1.1.2.dist-info/RECORD +57 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/273/213/347/273/215.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/273/273/345/212/241.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/277/241/346/201/257.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/205/254/345/221/212.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/200/345/211/221.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/207/346/215/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/240/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/267/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/215/241/347/273/204.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/223/252/351/207/214.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/234/260/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/257/274/345/205/245.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/257/274/345/207/272.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/275/261.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/213/274/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/216/242/347/264/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/216/250/351/200/201.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/224/266/351/233/206.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/224/273/347/225/245.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/233/264/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/235/220/346/226/231.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/237/245/350/257/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/240/241/351/252/214.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/257/217/346/234/210.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/267/261/346/270/212.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/267/273/345/212/240.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/270/205/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/212/266/346/200/201.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/255/276/345/210/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/273/221/345/256/232.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/241/250.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/241/250/346/203/205.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/247/222/350/211/262.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/256/260/345/275/225.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//351/205/215/347/275/256.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//351/207/215/345/220/257.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.html +0 -299
- nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.html +0 -341
- nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.html +0 -355
- nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/fingerprint.svg +0 -15
- nonebot_plugin_l4d2_server-1.1.1.dist-info/RECORD +0 -98
- {nonebot_plugin_l4d2_server-1.1.1.dist-info → nonebot_plugin_l4d2_server-1.1.2.dist-info}/WHEEL +0 -0
- {nonebot_plugin_l4d2_server-1.1.1.dist-info → nonebot_plugin_l4d2_server-1.1.2.dist-info}/entry_points.txt +0 -0
- {nonebot_plugin_l4d2_server-1.1.1.dist-info → nonebot_plugin_l4d2_server-1.1.2.dist-info}/licenses/LICENSE +0 -0
@@ -3,146 +3,15 @@
|
|
3
3
|
|
4
4
|
<head>
|
5
5
|
<meta charset="UTF-8">
|
6
|
-
<title
|
6
|
+
<title>已加载服务器</title>
|
7
|
+
<link rel="stylesheet" href="style.css">
|
7
8
|
<style>
|
8
9
|
body {
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
padding: 10px 0;
|
15
|
-
/* 只保留上下padding */
|
16
|
-
}
|
17
|
-
|
18
|
-
.outer-frame {
|
19
|
-
width: 900px;
|
20
|
-
background-color: white;
|
21
|
-
border-radius: 12px;
|
22
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
23
|
-
overflow: hidden;
|
24
|
-
border: 1px solid #e0e3e7;
|
25
|
-
margin: 0 auto;
|
26
|
-
/* 确保居中 */
|
27
|
-
}
|
28
|
-
|
29
|
-
.container {
|
30
|
-
width: 880px;
|
31
|
-
/* 调整为更接近外层宽度 */
|
32
|
-
margin: 0 auto;
|
33
|
-
padding: 20px 10px;
|
34
|
-
/* 减少左右padding */
|
35
|
-
box-sizing: border-box;
|
36
|
-
}
|
37
|
-
|
38
|
-
h1 {
|
39
|
-
text-align: center;
|
40
|
-
color: #2c3e50;
|
41
|
-
margin: 0 0 20px 0;
|
42
|
-
padding-bottom: 10px;
|
43
|
-
border-bottom: 2px solid #eee;
|
44
|
-
font-size: 24px;
|
45
|
-
}
|
46
|
-
|
47
|
-
.server-grid {
|
48
|
-
display: grid;
|
49
|
-
grid-template-columns: repeat(3, 280px);
|
50
|
-
/* 调整为3列280px */
|
51
|
-
gap: 10px;
|
52
|
-
justify-content: center;
|
53
|
-
/* 确保居中 */
|
54
|
-
padding: 0 10px;
|
55
|
-
/* 添加内边距防止溢出 */
|
56
|
-
}
|
57
|
-
|
58
|
-
.server-card {
|
59
|
-
width: 100%;
|
60
|
-
/* 改为100%填充网格单元格 */
|
61
|
-
background-color: #fff;
|
62
|
-
border: 1px solid #e0e3e7;
|
63
|
-
border-radius: 8px;
|
64
|
-
padding: 12px;
|
65
|
-
box-sizing: border-box;
|
66
|
-
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
|
67
|
-
}
|
68
|
-
|
69
|
-
/* 其余样式保持不变... */
|
70
|
-
.server-name {
|
71
|
-
font-weight: bold;
|
72
|
-
font-size: 14px;
|
73
|
-
color: #3498db;
|
74
|
-
margin-bottom: 8px;
|
75
|
-
white-space: nowrap;
|
76
|
-
overflow: hidden;
|
77
|
-
text-overflow: ellipsis;
|
78
|
-
text-align: left;
|
79
|
-
}
|
80
|
-
|
81
|
-
.server-details {
|
82
|
-
display: grid;
|
83
|
-
grid-template-columns: 80px 1fr;
|
84
|
-
gap: 5px;
|
85
|
-
font-size: 12px;
|
86
|
-
}
|
87
|
-
|
88
|
-
.detail-label {
|
89
|
-
font-weight: bold;
|
90
|
-
color: #7f8c8d;
|
91
|
-
text-align: left;
|
92
|
-
}
|
93
|
-
|
94
|
-
.detail-value {
|
95
|
-
text-align: left;
|
96
|
-
}
|
97
|
-
|
98
|
-
.map-name {
|
99
|
-
font-size: 13px;
|
100
|
-
color: #e74c3c;
|
101
|
-
margin: 5px 0;
|
102
|
-
text-align: left;
|
103
|
-
font-style: normal;
|
104
|
-
padding-left: 5px;
|
105
|
-
}
|
106
|
-
|
107
|
-
.players {
|
108
|
-
text-align: left;
|
109
|
-
margin-top: 6px;
|
110
|
-
font-size: 12px;
|
111
|
-
padding-left: 0px;
|
112
|
-
}
|
113
|
-
|
114
|
-
.online {
|
115
|
-
color: #27ae60;
|
116
|
-
}
|
117
|
-
|
118
|
-
.offline {
|
119
|
-
color: #e74c3c;
|
120
|
-
}
|
121
|
-
|
122
|
-
.footer {
|
123
|
-
text-align: center;
|
124
|
-
margin-top: 20px;
|
125
|
-
color: #7f8c8d;
|
126
|
-
font-size: 12px;
|
127
|
-
border-top: 1px solid #eee;
|
128
|
-
padding-top: 10px;
|
129
|
-
}
|
130
|
-
|
131
|
-
.map-name:before,
|
132
|
-
.players:before {
|
133
|
-
margin-right: 5px;
|
134
|
-
}
|
135
|
-
|
136
|
-
.vac-icon {
|
137
|
-
width: 13px;
|
138
|
-
height: auto;
|
139
|
-
margin-left: 15px;
|
140
|
-
}
|
141
|
-
|
142
|
-
.platform {
|
143
|
-
width: 13px;
|
144
|
-
height: auto;
|
145
|
-
margin-left: 15px;
|
10
|
+
margin: 0;
|
11
|
+
font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
|
12
|
+
background: url('../back_img/background.jpg') repeat;
|
13
|
+
background-size: cover;
|
14
|
+
/* filter: blur(12px) brightness(0.6); */
|
146
15
|
}
|
147
16
|
</style>
|
148
17
|
</head>
|
@@ -150,7 +19,7 @@
|
|
150
19
|
<body>
|
151
20
|
<div class="outer-frame">
|
152
21
|
<div class="container">
|
153
|
-
<h1
|
22
|
+
<h1>已加载服务器 {{ servers[1].command }} (共 {{ servers|length }} 台)</h1>
|
154
23
|
|
155
24
|
<div class="server-grid">
|
156
25
|
{% for server in servers %}
|
@@ -159,47 +28,86 @@
|
|
159
28
|
{{ server.server.server_name|replace('\n', ' ')|replace(' ', ' ')|trim }}
|
160
29
|
</div>
|
161
30
|
|
162
|
-
<div class="map-name"
|
163
|
-
|
31
|
+
<div class="map-name">
|
32
|
+
<span>🌎️</span>
|
33
|
+
<span>{{ server.server.map_name }}</span>
|
34
|
+
<label class="switch">
|
35
|
+
<input class="checkbox" type="checkbox" {% if server.enabled %} checked {% endif %} />
|
36
|
+
<span
|
37
|
+
class="slider round {% if server.server.player_count >= server.server.max_players %} locked {% endif %}">
|
38
|
+
<span
|
39
|
+
class="lock {% if server.server.player_count >= server.server.max_players %} locked {% endif %}"></span>
|
40
|
+
<span
|
41
|
+
class="status_text {% if server.server.max_players == 0 %}error{% elif server.server.player_count / server.server.max_players < 0.5 %}lack{% elif server.server.player_count >= server.server.max_players %}full{% else %}not_full{% endif %}">
|
42
|
+
{% if server.server.max_players == 0 %}
|
43
|
+
错误
|
44
|
+
{% elif server.server.player_count / server.server.max_players < 0.5 %} 缺人 {% elif
|
45
|
+
server.server.player_count>= server.server.max_players
|
46
|
+
%}
|
47
|
+
已满
|
48
|
+
{% else %}
|
49
|
+
未满
|
50
|
+
{% endif %}
|
51
|
+
</span>
|
52
|
+
</span>
|
53
|
+
</label>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="player-list">
|
57
|
+
{% set player_count = server.player|length %}
|
58
|
+
{% for i in range(max_count) %}
|
59
|
+
{% set player = server.player[i] if i < player_count else None %} {% if player and player.name
|
60
|
+
%} <div class="player-item">
|
61
|
+
<span class="player-score">【{{ player.score }}】</span>
|
62
|
+
<span class="player-name">{{ player.name }}</span>
|
63
|
+
|
164
64
|
</div>
|
65
|
+
{% endif %}
|
66
|
+
{% endfor %}
|
165
67
|
|
166
68
|
<div class="players">
|
167
|
-
|
168
|
-
|
69
|
+
<span class="status-indicator">
|
70
|
+
{% if server.server.player_count >= 0 %}
|
169
71
|
{% if server.server.max_players == 0 %}
|
170
|
-
|
171
|
-
{% elif server.server.player_count / server.server.max_players < 0.5 %}
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
{{ server.server.player_count }}/{{ server.server.max_players
|
72
|
+
<span class="offline">🔴</span>
|
73
|
+
{% elif server.server.player_count / server.server.max_players < 0.5 %} <span
|
74
|
+
class="online">🟢</span>
|
75
|
+
{% elif server.server.player_count >= server.server.max_players %}
|
76
|
+
<span class="warning">🟡</span>
|
77
|
+
{% else %}
|
78
|
+
<span class="online">🔵</span>
|
79
|
+
{% endif %}
|
80
|
+
<span class="player-count">{{ server.server.player_count }}/{{ server.server.max_players
|
81
|
+
}}</span>
|
179
82
|
{% else %}
|
180
83
|
<span class="offline">🔴 错误</span>
|
181
84
|
{% endif %}
|
182
|
-
|
183
|
-
|
85
|
+
</span>
|
86
|
+
|
87
|
+
<span class="server-meta">
|
88
|
+
<span class="server-icon">
|
89
|
+
<img src="{{ server.server.platform }}.svg" alt="平台">
|
90
|
+
</span>
|
91
|
+
{% if server.server.vac_enabled %}
|
92
|
+
<span class="server-icon">
|
93
|
+
<img src="vac.png" alt="VAC保护">
|
94
|
+
</span>
|
95
|
+
{% endif %}
|
96
|
+
<span class="ping-value">
|
97
|
+
{{ (server.server.ping * 1000)|round(1) }} ms
|
98
|
+
</span>
|
99
|
+
</span>
|
184
100
|
</div>
|
185
|
-
<div class="player">
|
186
|
-
{% set player_count = server.player|length %}
|
187
|
-
{% for i in range(max_count) %}
|
188
|
-
{% set player = server.player[i] if i < player_count else None %} {% if player and player.name %} <font
|
189
|
-
color="green">• {{ player.score }} | {{ player.name }}</font><br>
|
190
|
-
{% else %}
|
191
|
-
{% endif %}
|
192
|
-
{% endfor %}
|
193
|
-
</div>
|
194
101
|
</div>
|
195
|
-
{% endfor %}
|
196
102
|
</div>
|
103
|
+
{% endfor %}
|
104
|
+
</div>
|
197
105
|
|
198
|
-
|
199
|
-
|
200
|
-
</div>
|
106
|
+
<div class="footer">
|
107
|
+
@Anges Digital & Nonebot2
|
201
108
|
</div>
|
202
109
|
</div>
|
110
|
+
</div>
|
203
111
|
</body>
|
204
112
|
|
205
113
|
</html>
|
@@ -0,0 +1,264 @@
|
|
1
|
+
/* 页面基础样式 */
|
2
|
+
body {
|
3
|
+
margin: 0;
|
4
|
+
padding: 0;
|
5
|
+
min-height: 100vh;
|
6
|
+
font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
|
7
|
+
|
8
|
+
}
|
9
|
+
|
10
|
+
/* 容器样式 */
|
11
|
+
.outer-frame {
|
12
|
+
width: 900px;
|
13
|
+
background-color: rgba(255, 255, 255, 0.5);
|
14
|
+
border-radius: 12px;
|
15
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
|
16
|
+
overflow: hidden;
|
17
|
+
border: 1px solid #e0e3e7;
|
18
|
+
margin: 30px auto;
|
19
|
+
backdrop-filter: blur(2px);
|
20
|
+
position: relative;
|
21
|
+
z-index: 1;
|
22
|
+
}
|
23
|
+
|
24
|
+
/* 内容容器 */
|
25
|
+
.container {
|
26
|
+
width: 880px;
|
27
|
+
margin: 0 auto;
|
28
|
+
padding: 20px 10px;
|
29
|
+
box-sizing: border-box;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* 标题样式 */
|
33
|
+
h1 {
|
34
|
+
text-align: center;
|
35
|
+
color: #2c3e50;
|
36
|
+
margin: 0 0 20px 0;
|
37
|
+
padding-bottom: 10px;
|
38
|
+
border-bottom: 2px solid #eee;
|
39
|
+
font-size: 24px;
|
40
|
+
font-weight: bold;
|
41
|
+
}
|
42
|
+
|
43
|
+
/* 服务器网格布局 */
|
44
|
+
.server-grid {
|
45
|
+
display: grid;
|
46
|
+
grid-template-columns: repeat(3, 280px);
|
47
|
+
gap: 15px;
|
48
|
+
justify-content: center;
|
49
|
+
padding: 0 10px;
|
50
|
+
}
|
51
|
+
|
52
|
+
/* 服务器卡片样式 */
|
53
|
+
.server-card {
|
54
|
+
width: 100%;
|
55
|
+
background-color: rgba(255, 255, 255, 0.6);
|
56
|
+
border: 1px solid #e0e3e7;
|
57
|
+
border-radius: 8px;
|
58
|
+
padding: 15px;
|
59
|
+
box-sizing: border-box;
|
60
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6);
|
61
|
+
transition: all 0.3s ease;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
/* 服务器名称样式 */
|
66
|
+
.server-name {
|
67
|
+
font-weight: bold;
|
68
|
+
font-size: 15px;
|
69
|
+
color: #3498db;
|
70
|
+
margin-bottom: 10px;
|
71
|
+
white-space: nowrap;
|
72
|
+
overflow: hidden;
|
73
|
+
text-overflow: ellipsis;
|
74
|
+
padding-bottom: 5px;
|
75
|
+
border-bottom: 1px dashed #eee;
|
76
|
+
}
|
77
|
+
|
78
|
+
/* 地图名称样式 */
|
79
|
+
.map-name {
|
80
|
+
font-size: 13px;
|
81
|
+
color: #e74c3c;
|
82
|
+
margin: 8px 0;
|
83
|
+
display: flex;
|
84
|
+
align-items: center;
|
85
|
+
gap: 5px;
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
/* 玩家信息样式 */
|
90
|
+
.players {
|
91
|
+
display: flex;
|
92
|
+
align-items: center;
|
93
|
+
margin-top: 10px;
|
94
|
+
font-size: 12px;
|
95
|
+
gap: 8px;
|
96
|
+
flex-wrap: wrap;
|
97
|
+
justify-content: space-between;
|
98
|
+
}
|
99
|
+
|
100
|
+
/* 状态指示器样式 */
|
101
|
+
.status-indicator {
|
102
|
+
display: inline-flex;
|
103
|
+
align-items: center;
|
104
|
+
gap: 3px;
|
105
|
+
}
|
106
|
+
|
107
|
+
/* 在线状态颜色 */
|
108
|
+
.online {
|
109
|
+
color: #27ae60;
|
110
|
+
}
|
111
|
+
|
112
|
+
/* 离线状态颜色 */
|
113
|
+
.offline {
|
114
|
+
color: #e74c3c;
|
115
|
+
}
|
116
|
+
|
117
|
+
/* 警告状态颜色 */
|
118
|
+
.warning {
|
119
|
+
color: #f39c12;
|
120
|
+
}
|
121
|
+
|
122
|
+
/* 服务器元信息容器 */
|
123
|
+
.server-meta {
|
124
|
+
display: flex;
|
125
|
+
align-items: center;
|
126
|
+
gap: 10px;
|
127
|
+
margin-top: 8px;
|
128
|
+
}
|
129
|
+
|
130
|
+
/* icon选项 */
|
131
|
+
.server-icon {
|
132
|
+
display: flex;
|
133
|
+
align-items: center;
|
134
|
+
gap: 3px;
|
135
|
+
font-size: 11px;
|
136
|
+
color: #7f8c8d;
|
137
|
+
}
|
138
|
+
|
139
|
+
/* 服务器图标大小 */
|
140
|
+
.server-icon img {
|
141
|
+
width: 12px;
|
142
|
+
height: 12px;
|
143
|
+
}
|
144
|
+
|
145
|
+
/* 延迟值字体 */
|
146
|
+
.ping-value {
|
147
|
+
font-family: monospace;
|
148
|
+
color: #3498db;
|
149
|
+
}
|
150
|
+
|
151
|
+
/* 玩家列表样式 */
|
152
|
+
.player-list {
|
153
|
+
margin-top: 10px;
|
154
|
+
font-size: 11px;
|
155
|
+
line-height: 1.4;
|
156
|
+
background-color: transparent;
|
157
|
+
flex-wrap: wrap;
|
158
|
+
}
|
159
|
+
|
160
|
+
/* 单个玩家条目 */
|
161
|
+
.player-item {
|
162
|
+
color: #2c3e50;
|
163
|
+
display: flex;
|
164
|
+
align-items: right;
|
165
|
+
}
|
166
|
+
|
167
|
+
/* 玩家名字体 */
|
168
|
+
.player-name {
|
169
|
+
overflow: hidden;
|
170
|
+
text-overflow: ellipsis;
|
171
|
+
white-space: nowrap;
|
172
|
+
max-width: calc(100% - 10px); /* 假设右边没有其他元素需要空间 */
|
173
|
+
box-sizing: border-box; /* 确保padding和border计入总宽度 */
|
174
|
+
}
|
175
|
+
|
176
|
+
/* 玩家分数样式 */
|
177
|
+
.player-score {
|
178
|
+
color: #27ae60;
|
179
|
+
font-weight: bold;
|
180
|
+
margin-left: 20px;
|
181
|
+
}
|
182
|
+
|
183
|
+
/* 页脚样式 */
|
184
|
+
.footer {
|
185
|
+
text-align: center;
|
186
|
+
margin-top: 25px;
|
187
|
+
color: #000000;
|
188
|
+
font-size: 12px;
|
189
|
+
border-top: 1px solid #858585;
|
190
|
+
padding-top: 12px;
|
191
|
+
}
|
192
|
+
|
193
|
+
.status_text {
|
194
|
+
position: absolute;
|
195
|
+
top: 50%;
|
196
|
+
left: 50%;
|
197
|
+
transform: translate(-50%, -50%);
|
198
|
+
white-space: nowrap;
|
199
|
+
/* 防止换行 */
|
200
|
+
padding: 2px 6px;
|
201
|
+
/* 添加一些内边距以增加可读性 */
|
202
|
+
border-radius: 16px;
|
203
|
+
/* 圆角 */
|
204
|
+
}
|
205
|
+
|
206
|
+
.switch {
|
207
|
+
position: relative;
|
208
|
+
display: inline-block;
|
209
|
+
width: 40px;
|
210
|
+
height: 24px;
|
211
|
+
}
|
212
|
+
|
213
|
+
.plugin_meta_line1 {
|
214
|
+
display: flex;
|
215
|
+
flex-direction: row;
|
216
|
+
align-items: center;
|
217
|
+
justify-content: space-between;
|
218
|
+
}
|
219
|
+
|
220
|
+
.slider.round {
|
221
|
+
border-radius: 24px;
|
222
|
+
}
|
223
|
+
|
224
|
+
.slider {
|
225
|
+
position: absolute;
|
226
|
+
cursor: pointer;
|
227
|
+
top: 0;
|
228
|
+
left: 0;
|
229
|
+
right: 0;
|
230
|
+
bottom: 0;
|
231
|
+
background-color: #ccc;
|
232
|
+
}
|
233
|
+
|
234
|
+
.error {
|
235
|
+
background-color: #999;
|
236
|
+
/* 灰色背景 */
|
237
|
+
color: white;
|
238
|
+
/* 白色文字 */
|
239
|
+
}
|
240
|
+
|
241
|
+
.lack {
|
242
|
+
background-color: #4CAF50;
|
243
|
+
/* 绿色背景 */
|
244
|
+
color: white;
|
245
|
+
/* 白色文字 */
|
246
|
+
}
|
247
|
+
|
248
|
+
.full {
|
249
|
+
background-color: #f44336;
|
250
|
+
/* 红色背景 */
|
251
|
+
color: white;
|
252
|
+
/* 白色文字 */
|
253
|
+
}
|
254
|
+
|
255
|
+
.not_full {
|
256
|
+
background-color: #2196F3;
|
257
|
+
/* 蓝色背景 */
|
258
|
+
color: white;
|
259
|
+
/* 白色文字 */
|
260
|
+
}
|
261
|
+
|
262
|
+
.switch {
|
263
|
+
float: right;
|
264
|
+
}
|
@@ -7,6 +7,7 @@ from nonebot.log import logger
|
|
7
7
|
from PIL import Image, ImageDraw, ImageFont
|
8
8
|
|
9
9
|
from ..config import config
|
10
|
+
from ..l4_image.html_img import convert_duration
|
10
11
|
from ..utils.api.models import NserverOut, OutServer
|
11
12
|
from ..utils.api.request import L4API
|
12
13
|
|
@@ -281,21 +282,3 @@ async def get_much_server(server_json: List[NserverOut], command: str):
|
|
281
282
|
)
|
282
283
|
|
283
284
|
return out_server
|
284
|
-
|
285
|
-
|
286
|
-
async def convert_duration(duration: float) -> str:
|
287
|
-
"""Convert duration in seconds to human-readable string format (e.g. '1h 30m 15s')
|
288
|
-
Args:
|
289
|
-
duration: Duration in seconds
|
290
|
-
Returns:
|
291
|
-
Formatted time string
|
292
|
-
"""
|
293
|
-
minutes, seconds = divmod(duration, 60)
|
294
|
-
hours, minutes = divmod(minutes, 60)
|
295
|
-
time_str = ""
|
296
|
-
if hours > 0:
|
297
|
-
time_str += f"{int(hours)}h "
|
298
|
-
if minutes > 0:
|
299
|
-
time_str += f"{int(minutes)}m "
|
300
|
-
time_str += f"{int(seconds)}s"
|
301
|
-
return time_str
|
{nonebot_plugin_l4d2_server-1.1.1.dist-info → nonebot_plugin_l4d2_server-1.1.2.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nonebot-plugin-l4d2-server
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.2
|
4
4
|
Summary: L4D2 server related operations plugin for NoneBot2
|
5
5
|
Keywords: steam,game,l4d2,nonebot2,plugin
|
6
6
|
Author-Email: Agnes_Digital <Z735803792@163.com>
|
@@ -24,9 +24,8 @@ Requires-Dist: nonebot_plugin_datastore>=1.3.0
|
|
24
24
|
Requires-Dist: nonebot-plugin-tortoise-orm>=0.1.4
|
25
25
|
Requires-Dist: aiohttp>=3.8.4
|
26
26
|
Requires-Dist: jinja2>=3.0.0
|
27
|
-
Requires-Dist: srctools>=2.
|
27
|
+
Requires-Dist: srctools>=2.6.0
|
28
28
|
Requires-Dist: httpx>=0.22.0
|
29
|
-
Requires-Dist: msgspec>=0.18.0
|
30
29
|
Requires-Dist: python-a2s>=1.4.1
|
31
30
|
Requires-Dist: ujson>=5.10.0
|
32
31
|
Requires-Dist: lxml>=5.2.2
|
@@ -0,0 +1,57 @@
|
|
1
|
+
nonebot_plugin_l4d2_server-1.1.2.dist-info/METADATA,sha256=4ef1UA6SVX2VR7BCs1FKWV3zwRB30WQkODc8cOBDdFg,6728
|
2
|
+
nonebot_plugin_l4d2_server-1.1.2.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
|
3
|
+
nonebot_plugin_l4d2_server-1.1.2.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
4
|
+
nonebot_plugin_l4d2_server-1.1.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
5
|
+
nonebot_plugin_l4d2_server/__init__.py,sha256=xzhXyprPmoTTjpfyqYlMweC4umuLsm8MERA1ZTqCyYc,1661
|
6
|
+
nonebot_plugin_l4d2_server/__main__.py,sha256=-m1tH_4T-9AP66V3Drb1t8CZXZMc0eAUXZsBY3LEBuI,10271
|
7
|
+
nonebot_plugin_l4d2_server/config.py,sha256=Xxhl6YkDxQiEFdptXaWDoFfiwnVJGhjF39gfX4A0sdg,4193
|
8
|
+
nonebot_plugin_l4d2_server/data/font/loli.ttf,sha256=Yrh-RPoCrn1-NG94DR0x20ASXYUt8g3Ep6BCt3CdOFk,11125812
|
9
|
+
nonebot_plugin_l4d2_server/l4_help/Help.json,sha256=D0YmZYGW-imC7nVebkQ0_eODiqevQhL9aKj-cyBaqDY,1704
|
10
|
+
nonebot_plugin_l4d2_server/l4_help/__init__.py,sha256=QQgYRR-KN6odwLpR9peUIIjlffOyfwwKnHzbHWOH2Fw,1479
|
11
|
+
nonebot_plugin_l4d2_server/l4_help/draw.py,sha256=y6yDPUnoZFvwly8cf7g9HRpT1JXTxyA9DC1TuvUinTM,6448
|
12
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/badge.png,sha256=KJlwepfquSqdo7kXhTCK_asLP3Vu-zfQKoOOTTYGBFc,8186
|
13
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/banner.png,sha256=e7dNro0VBjtdxnXkAjHP_AM3IVPevTgfQbATpJ6toMw,32330
|
14
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/bg.jpg,sha256=xTyLJLgo3E-ZH-tupsjZCNIgwQrwyttdxefQYhUZNt0,246026
|
15
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/button.png,sha256=oQKoRBJDaVXz2eVD-lHkaVcV1aw0ehkNBK8TNSjTehI,12711
|
16
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/icon.png,sha256=A2p0r8aBXpNy_b_CtZTZzTrEeHbGRYzO2fNwahyLlQ0,634659
|
17
|
+
nonebot_plugin_l4d2_server/l4_image/__init__.py,sha256=-GWXUDv_z_cfJ-wyvx5J3wB9P7ng4NzRHfCq-GZD6XQ,431
|
18
|
+
nonebot_plugin_l4d2_server/l4_image/convert.py,sha256=HXTQAkxaAUWGB7YidyD2KFcavthNYGdlr951PZEF4Uk,2606
|
19
|
+
nonebot_plugin_l4d2_server/l4_image/download.py,sha256=qRAo0Ggj5KV8RQN3LFJe547__wwC7Ww4QnT-v3pfe6w,3116
|
20
|
+
nonebot_plugin_l4d2_server/l4_image/html_img.py,sha256=FkHLZ04y9F5qboYVYFMr015BfaOoNhRIEzObwSLi-D8,3225
|
21
|
+
nonebot_plugin_l4d2_server/l4_image/image_tools.py,sha256=oJmYiHPEbFESK4QzsdFm3vrdF0qBRhSqbYXCRnCtzpk,11656
|
22
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/anne.html,sha256=8JOUXoWdulhoP2Axy_omuSDafbduKDZ9Y8Rz2VZWTso,1590
|
23
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/back.png,sha256=jnsYjnvd2BFcdkdsW8HgcSloWF0ZliPkqlWSIDnFUxw,245488
|
24
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/back1.jpg,sha256=hAzPHflbf4db5S3rM5xn-1wnDP8xZExikYmkKW5c4w0,113622
|
25
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/group_ip.html,sha256=0RCWB0q8Wx0NcKdVmGeVr2odaNzODNVCJK0jiQ826U8,7222
|
26
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/ip.html,sha256=hvKDc7ASbuaGxtx5Doavg5qa82K1vGq4bSapjrwrTy8,1611
|
27
|
+
nonebot_plugin_l4d2_server/l4_image/img/back_img/background.jpg,sha256=a5xUtmwkGQSM6Y-877ygOiJCcjjNU79eQj6f8FTfXV8,409941
|
28
|
+
nonebot_plugin_l4d2_server/l4_image/img/head/head.png,sha256=5kZ_9Toabm5y1VYnSQ9XGQIAef2v5wwROilmD_jKz1I,160309
|
29
|
+
nonebot_plugin_l4d2_server/l4_image/img/header/logo.png,sha256=86sZp1cYvrPHY-L-3T8Y64Q3CcouCh7eH4XPln9Gp9Q,633582
|
30
|
+
nonebot_plugin_l4d2_server/l4_image/img/header/player1.jpg,sha256=uiWlehfMGn7SlR5c5gL5ceWNQ4MTCRuS-6qSHRFNXD0,407306
|
31
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/HYPixel11pxU-2.ttf,sha256=RGJai1Y8AP8toBwIqq2EZyaBmRbRYPUpNu7f2ZWeDuk,2446828
|
32
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Tutumianhuatang-Bold-2.ttf,sha256=rX7HSHSCpQ4mJYsGghvm3btXLabxcCEbLF52wKNDNAE,3090420
|
33
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/bilibili.svg,sha256=v3u6R-HLoTHVI1qPCNopPWd_WYZ9L2YSqvvB-L6RZY8,1336
|
34
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/github.svg,sha256=Ev2CdWEyL4G-_bhZJ9vBZr5MEWjcgSR819mracoXjqc,1175
|
35
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/l.svg,sha256=YbahWPd7uau6edcATiWrA8apYyrlKeTejuvRHwXkmLI,5484
|
36
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/m.svg,sha256=JKosfpA8Jncw018dWHVzVR8orC48u3mMdzQovWAa91s,2428
|
37
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/normal.html,sha256=fGn58foIWX1IEy96A-XIuUJa49Jml6ZASYFSfFjEMak,5276
|
38
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/normal_.html,sha256=TbHKy4cV-7rEVuE3dx75P1Pf9YKTIp8KW5JoaJFMenY,6610
|
39
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/style.css,sha256=frEXxpwPQkWZorO4abhSlFZCmpsx5enYsbdwUYoX_E8,4589
|
40
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/vac.png,sha256=sX2_qenkRakqP74Sq-FoBYBX1qS8gVYz9L07ijL2vlc,6741
|
41
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/vac_white.png,sha256=3hpqIOp07FJhl9F15Mzc0LUMWQBAZhif8Ealb4doyoI,6045
|
42
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/vue.css,sha256=2sGjCFrR-3tFMB_x7l4K6k40tZ5JVzhWqD759cagYBA,7874
|
43
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/w.svg,sha256=LnctC2mVwjdhRMiS9ffrjUX-9KGwqb6OMmpJXvVXl70,486
|
44
|
+
nonebot_plugin_l4d2_server/l4_image/model.py,sha256=FGsCvf_BKbRNJUVy6I5BKnArMY-3JEIdqeX2gs93E5o,231
|
45
|
+
nonebot_plugin_l4d2_server/l4_image/vtfs.py,sha256=He_7zzEIOip8MXP55TS7aWPbzo6ac0wPf602nN3GWZM,1461
|
46
|
+
nonebot_plugin_l4d2_server/l4_local/__init__.py,sha256=gNNUNXGKHA8UXQaDKomND4VEutGpAghpYE4Va13gb5I,4736
|
47
|
+
nonebot_plugin_l4d2_server/l4_local/file.py,sha256=hew1Y8kV3uSZvUGplmi09EGKC89-sUJWsWV7SCEstI8,3067
|
48
|
+
nonebot_plugin_l4d2_server/l4_request/__init__.py,sha256=6fSaWFUC-dgU5DWzdDxxcAV4-LwxSaIZbTn7UXE_H3g,8179
|
49
|
+
nonebot_plugin_l4d2_server/l4_request/draw_msg.py,sha256=JnuXTbaHhZ8L3XdPzMSV7_puy7-v63mPXy-Ui5lWlUQ,11017
|
50
|
+
nonebot_plugin_l4d2_server/l4_request/utils.py,sha256=VInMCBduIL0I3zLQ60Sq29gwZ3hbU4tRyOT94mJD-vo,5229
|
51
|
+
nonebot_plugin_l4d2_server/utils/api/api.py,sha256=auvDicCEKwvnm6EJYeCxCtugFby61K-zAmmaRWWEwtM,296
|
52
|
+
nonebot_plugin_l4d2_server/utils/api/models.py,sha256=p-hoxPHwadTaMRb2hqwfbaQ3pvJySrV8VbBmhA0Oi-M,2391
|
53
|
+
nonebot_plugin_l4d2_server/utils/api/request.py,sha256=JGAhMgPgmy2Z2w7w3GVlUGKBmxlaTTDD3bq1T2dhHIE,13567
|
54
|
+
nonebot_plugin_l4d2_server/utils/api/utils.py,sha256=rdrFK3VKP59KfNX-C8v0Q_IV3tBLm02Wo9axLTQQ87Y,762
|
55
|
+
nonebot_plugin_l4d2_server/utils/database/models.py,sha256=SLdcgwsn39r_ZkcBoqf4MLX1EfpCOjGBwWcR16u9Bqo,454
|
56
|
+
nonebot_plugin_l4d2_server/utils/utils.py,sha256=KHfnTO3a-rGpjhXTsXypC0xb61ijpON631zqjIAW2vo,6836
|
57
|
+
nonebot_plugin_l4d2_server-1.1.2.dist-info/RECORD,,
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|