Archived
1
0
Fork 0
This commit is contained in:
yzhh 2021-01-08 20:30:59 +08:00
parent 4c4ab09387
commit e2c5d9ff3f
2 changed files with 116 additions and 60 deletions

View file

@ -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) + ".")

View file

@ -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) + ".")