update
This commit is contained in:
parent
4c4ab09387
commit
e2c5d9ff3f
2 changed files with 116 additions and 60 deletions
|
@ -1,10 +1,9 @@
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
import traceback
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
|
||||||
from .be import main
|
|
||||||
|
|
||||||
|
|
||||||
async def server(address):
|
async def server(address):
|
||||||
matchObj = re.match(r'(.*):(.*)', address, re.M | re.I)
|
matchObj = re.match(r'(.*):(.*)', address, re.M | re.I)
|
||||||
|
@ -21,7 +20,7 @@ async def server(address):
|
||||||
port2 = '19132'
|
port2 = '19132'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
url = 'http://motd.wd-api.com/?ip=' + serip + '&port=' + port1 + '&mode=info'
|
url = 'http://motd.wd-api.com/java?ip=' + serip + '&port=' + port1 + '&mode=info'
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
||||||
if req.status != 200:
|
if req.status != 200:
|
||||||
|
@ -31,43 +30,69 @@ async def server(address):
|
||||||
file = json.loads(motd)
|
file = json.loads(motd)
|
||||||
try:
|
try:
|
||||||
if file['code'] == 200:
|
if file['code'] == 200:
|
||||||
x = re.sub(r'§\w', "", file['data']['description']['text'])
|
servers.append('[JE]')
|
||||||
if not x:
|
jejson = file['data']
|
||||||
extra = file['data']['description']['extra']
|
if 'description' in jejson:
|
||||||
text = []
|
description = jejson['description']
|
||||||
qwq = ''
|
if 'text' in description:
|
||||||
for item in extra[:]:
|
servers.append(description['text'])
|
||||||
text.append(item['text'])
|
elif 'extra' in description:
|
||||||
servers.append('[JE]\n' + qwq.join(text) + "\n" + "在线玩家:" + str(
|
extra = description['extra']
|
||||||
file['data']['players']['online']) + "/" + str(
|
text = []
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
qwq = ''
|
||||||
else:
|
for item in extra[:]:
|
||||||
servers.append(
|
text.append(item['text'])
|
||||||
'[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
servers.append(qwq.join(text))
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
else:
|
||||||
|
servers.append(description)
|
||||||
|
|
||||||
|
if 'players' in jejson:
|
||||||
|
onlinesplayer = f"在线玩家:{str(jejson['players']['online'])} / {str(jejson['players']['max'])}"
|
||||||
|
servers.append(onlinesplayer)
|
||||||
|
if 'version' in jejson:
|
||||||
|
versions = "游戏版本:" + file['data']['version']['name']
|
||||||
|
servers.append(versions)
|
||||||
|
servers.append(serip + ':' + port1)
|
||||||
else:
|
else:
|
||||||
print('获取JE服务器信息失败。')
|
print('获取JE服务器信息失败。')
|
||||||
except Exception:
|
except Exception:
|
||||||
try:
|
traceback.print_exc()
|
||||||
x = re.sub(r'§\w', "", file['data']['description'])
|
servers.append("[JE]\n发生错误:调用API时发生错误。")
|
||||||
servers.append('[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
except Exception:
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
print('获取JE服务器信息失败。')
|
||||||
except Exception as e:
|
traceback.print_exc()
|
||||||
print('获取JE服务器信息失败。' + str(e))
|
|
||||||
servers.append("[JE]\n发生错误:调用API时发生错误。")
|
|
||||||
except Exception as e:
|
|
||||||
print('获取JE服务器信息失败。' + str(e))
|
|
||||||
try:
|
try:
|
||||||
BE = await main(serip, port2)
|
beurl = 'http://motd.wd-api.com/bedrock?ip=' + serip + '&port=' + port2 + '&mode=info'
|
||||||
BER = re.sub(r'§\w', "", BE)
|
async with aiohttp.ClientSession() as session:
|
||||||
servers.append(BER)
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
||||||
except Exception as e:
|
if req.status != 200:
|
||||||
print('获取BE服务器信息失败。' + str(e))
|
print(f"请求时发生错误:{req.status}")
|
||||||
|
else:
|
||||||
|
bemotd = await req.text()
|
||||||
|
bejson = json.loads(bemotd)
|
||||||
|
besplit = bejson['motd'].split(';')
|
||||||
|
motd_1 = besplit[1]
|
||||||
|
motd_2 = besplit[8]
|
||||||
|
player_count = besplit[5]
|
||||||
|
max_players = besplit[6]
|
||||||
|
edition = besplit[0]
|
||||||
|
version_name = besplit[4]
|
||||||
|
game_mode = besplit[9]
|
||||||
|
bemsg = '[BE]\n' +\
|
||||||
|
motd_1 + ' - ' + motd_2 +\
|
||||||
|
'\n在线玩家:' + player_count + '/' + max_players +\
|
||||||
|
'\n游戏版本:' + edition + version_name +\
|
||||||
|
'\n游戏模式:' + game_mode
|
||||||
|
servers.append(bemsg)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
print('获取BE服务器信息失败。')
|
||||||
|
traceback.print_exc()
|
||||||
if str(servers) == '[]':
|
if str(servers) == '[]':
|
||||||
return ('连接失败,没有检测到任何服务器。')
|
return ('连接失败,没有检测到任何服务器。')
|
||||||
else:
|
else:
|
||||||
awa = '\n'
|
awa = '\n'
|
||||||
servers.append("[30秒后撤回本消息]")
|
servers.append("[30秒后撤回本消息]")
|
||||||
return (awa.join(servers))
|
return re.sub(r'§\w', "", awa.join(servers))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return ("发生错误:" + str(e) + ".")
|
return ("发生错误:" + str(e) + ".")
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
import traceback
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
|
||||||
from .be import main
|
|
||||||
|
|
||||||
|
async def server(address):
|
||||||
async def serverraw(address):
|
|
||||||
matchObj = re.match(r'(.*):(.*)', address, re.M | re.I)
|
matchObj = re.match(r'(.*):(.*)', address, re.M | re.I)
|
||||||
servers = []
|
servers = []
|
||||||
|
|
||||||
|
@ -21,7 +20,7 @@ async def serverraw(address):
|
||||||
port2 = '19132'
|
port2 = '19132'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
url = 'http://motd.wd-api.com/?ip=' + serip + '&port=' + port1 + '&mode=info'
|
url = 'http://motd.wd-api.com/java?ip=' + serip + '&port=' + port1 + '&mode=info'
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
||||||
if req.status != 200:
|
if req.status != 200:
|
||||||
|
@ -31,37 +30,69 @@ async def serverraw(address):
|
||||||
file = json.loads(motd)
|
file = json.loads(motd)
|
||||||
try:
|
try:
|
||||||
if file['code'] == 200:
|
if file['code'] == 200:
|
||||||
x = file['data']['description']['text']
|
servers.append('[JE]')
|
||||||
if not x:
|
jejson = file['data']
|
||||||
extra = file['data']['description']['extra']
|
if 'description' in jejson:
|
||||||
servers.append(
|
description = jejson['description']
|
||||||
'[JE]\n' + str(extra) + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
if 'text' in description:
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
servers.append(description['text'])
|
||||||
else:
|
elif 'extra' in description:
|
||||||
servers.append(
|
extra = description['extra']
|
||||||
'[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
text = []
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
qwq = ''
|
||||||
|
for item in extra[:]:
|
||||||
|
text.append(item['text'])
|
||||||
|
servers.append(qwq.join(text))
|
||||||
|
else:
|
||||||
|
servers.append(description)
|
||||||
|
|
||||||
|
if 'players' in jejson:
|
||||||
|
onlinesplayer = f"在线玩家:{str(jejson['players']['online'])} / {str(jejson['players']['max'])}"
|
||||||
|
servers.append(onlinesplayer)
|
||||||
|
if 'version' in jejson:
|
||||||
|
versions = "游戏版本:" + file['data']['version']['name']
|
||||||
|
servers.append(versions)
|
||||||
|
servers.append(serip + ':' + port1)
|
||||||
else:
|
else:
|
||||||
print('获取JE服务器信息失败。')
|
print('获取JE服务器信息失败。')
|
||||||
except Exception:
|
except Exception:
|
||||||
try:
|
traceback.print_exc()
|
||||||
x = file['data']['description']
|
servers.append("[JE]\n发生错误:调用API时发生错误。")
|
||||||
servers.append('[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
except Exception:
|
||||||
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
print('获取JE服务器信息失败。')
|
||||||
except Exception as e:
|
traceback.print_exc()
|
||||||
print('获取JE服务器信息失败。' + str(e))
|
|
||||||
servers.append("[JE]\n发生错误:调用API时发生错误。")
|
|
||||||
except Exception as e:
|
|
||||||
print('获取JE服务器信息失败。' + str(e))
|
|
||||||
try:
|
try:
|
||||||
BE = await main(serip, port2)
|
beurl = 'http://motd.wd-api.com/bedrock?ip=' + serip + '&port=' + port2 + '&mode=info'
|
||||||
servers.append(BE)
|
async with aiohttp.ClientSession() as session:
|
||||||
except Exception as e:
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
||||||
print('获取BE服务器信息失败。' + str(e))
|
if req.status != 200:
|
||||||
|
print(f"请求时发生错误:{req.status}")
|
||||||
|
else:
|
||||||
|
bemotd = await req.text()
|
||||||
|
bejson = json.loads(bemotd)
|
||||||
|
besplit = bejson['motd'].split(';')
|
||||||
|
motd_1 = besplit[1]
|
||||||
|
motd_2 = besplit[8]
|
||||||
|
player_count = besplit[5]
|
||||||
|
max_players = besplit[6]
|
||||||
|
edition = besplit[0]
|
||||||
|
version_name = besplit[4]
|
||||||
|
game_mode = besplit[9]
|
||||||
|
bemsg = '[BE]\n' +\
|
||||||
|
motd_1 + ' - ' + motd_2 +\
|
||||||
|
'\n在线玩家:' + player_count + '/' + max_players +\
|
||||||
|
'\n游戏版本:' + edition + version_name +\
|
||||||
|
'\n游戏模式:' + game_mode
|
||||||
|
servers.append(bemsg)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
print('获取BE服务器信息失败。')
|
||||||
|
traceback.print_exc()
|
||||||
if str(servers) == '[]':
|
if str(servers) == '[]':
|
||||||
return ('连接失败,没有检测到任何服务器。')
|
return ('连接失败,没有检测到任何服务器。')
|
||||||
else:
|
else:
|
||||||
awa = '\n'
|
awa = '\n'
|
||||||
return (awa.join(servers))
|
servers.append("[30秒后撤回本消息]")
|
||||||
|
return awa.join(servers)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return ("发生错误:" + str(e) + ".")
|
return ("发生错误:" + str(e) + ".")
|
||||||
|
|
Reference in a new issue