先上图看效果
实现方法
第一步:获取LOL服务器状态信息
需要安装requests库
在lol服务器状态查询的官方页面(https://lol.qq.com/act/a20150326dqpd/)上按下F12打开开发者工具按下ctrl+R刷新页面不难发现其服务器状态是通过该链接获取的:
https://serverstatus.native.qq.com/a20150326dqpd/a20150326dqpd/RetObj
- 通过py处理如下:
def get_s_s():
url = 'https://serverstatus.native.qq.com/a20150326dqpd/a20150326dqpd/RetObj' #获取信息的url
result = requests.get(url).text # 获取数据
res = json.loads(result.split('[', 1)[1].split(']', 1)[0].split('}', 1)[0] + '}') # 取出关键信息并返回
return res
第二步:处理数据
第一步得到返回的数据是用字母和数字简化过的,不难发现网页源代码中其实是有个字典来映射服务器名称和服务器状态的,我这边直接搬过来啦。
# 服务器状态
ServerStatus = {
'G': '正常',
'Y': '拥挤',
'R': '满载',
'S': '维护',
' ': ' '
}
# 服务器映射
ServerInfo = {
'1': '艾欧尼亚',
'2': '比尔吉沃特',
'14': '黑色玫瑰',
'4': '诺克萨斯',
'5': '班德尔城',
'6': '德玛西亚',
'7': '皮尔特沃夫',
'8': '战争学院',
'9': '弗雷尔卓德',
'10': '巨神峰',
'11': '雷瑟守备',
'12': '无畏先锋',
'13': '裁决之地',
'3': '祖安',
'15': '暗影岛',
'16': '恕瑞玛',
'17': '钢铁烈阳',
'18': '水晶之痕',
'19': '均衡教派',
'20': '扭曲丛林',
'21': '教育网专区',
'22': '影流',
'23': '守望之海',
'24': '征服之海',
'25': '卡拉曼达',
'26': '巨龙之巢',
'27': '皮城警备',
'30': '男爵领域',
}
第三步:显示数据
需要安装rich库
到今天的重头戏rich库
- github:https://github.com/willmcgugan/rich
- 中文文档:https://github.com/Textualize/rich/blob/master/README.cn.md 具体的使用方法我就不赘述了,直接上代码。
def poc(res): # 从get_s_s()方法中返回的数据
console = Console()
table = Table(show_header=True, header_style="bold magenta")
table.add_column("服务器名称", style="dim", width=12, justify="center")
table.add_column("状态", width=10, justify="center")
for a in ServerInfo:
if ServerStatus[res[a]] == '正常': # 如果是正常就显示绿色
table.add_row('[green]' + ServerInfo[a] + '[/green]', '[green]' + ServerStatus[res[a]] + '[/green]')
if ServerStatus[res[a]] == '拥挤': # 如果是拥挤就显示黄色
table.add_row('[yellow]' + ServerInfo[a] + '[/yellow]', '[yellow]' + ServerStatus[res[a]] + '[/yellow]')
if ServerStatus[res[a]] == '满载': # 如果是满载就显示红色
table.add_row('[red]' + ServerInfo[a] + '[/red]', '[red]' + ServerStatus[res[a]] + '[/red]')
if ServerStatus[res[a]] == '维护': # 如果是维护就显示灰色
table.add_row(ServerInfo[a], ServerStatus[res[a]])
console.print(table)
整合代码如下
import requests
import json
from rich.console import Console
from rich.table import Column, Table
ServerStatus = {
'G': '正常',
'Y': '拥挤',
'R': '满载',
'S': '维护',
' ': ' '
}
ServerInfo = {
'1': '艾欧尼亚',
'2': '比尔吉沃特',
'14': '黑色玫瑰',
'4': '诺克萨斯',
'5': '班德尔城',
'6': '德玛西亚',
'7': '皮尔特沃夫',
'8': '战争学院',
'9': '弗雷尔卓德',
'10': '巨神峰',
'11': '雷瑟守备',
'12': '无畏先锋',
'13': '裁决之地',
'3': '祖安',
'15': '暗影岛',
'16': '恕瑞玛',
'17': '钢铁烈阳',
'18': '水晶之痕',
'19': '均衡教派',
'20': '扭曲丛林',
'21': '教育网专区',
'22': '影流',
'23': '守望之海',
'24': '征服之海',
'25': '卡拉曼达',
'26': '巨龙之巢',
'27': '皮城警备',
'30': '男爵领域',
}
def get_s_s():
url = 'https://serverstatus.native.qq.com/a20150326dqpd/a20150326dqpd/RetObj'
result = requests.get(url).text
res = json.loads(result.split('[', 1)[1].split(']', 1)[0].split('}', 1)[0] + '}')
return res
def poc(res):
console = Console()
table = Table(show_header=True, header_style="bold magenta")
table.add_column("服务器名称", style="dim", width=12, justify="center")
table.add_column("状态", width=10, justify="center")
for a in ServerInfo:
if ServerStatus[res[a]] == '正常':
table.add_row('[green]' + ServerInfo[a] + '[/green]', '[green]' + ServerStatus[res[a]] + '[/green]')
if ServerStatus[res[a]] == '拥挤':
table.add_row('[yellow]' + ServerInfo[a] + '[/yellow]', '[yellow]' + ServerStatus[res[a]] + '[/yellow]')
if ServerStatus[res[a]] == '满载':
table.add_row('[red]' + ServerInfo[a] + '[/red]', '[red]' + ServerStatus[res[a]] + '[/red]')
if ServerStatus[res[a]] == '维护':
table.add_row(ServerInfo[a], ServerStatus[res[a]])
console.print(table)
if __name__ == '__main__':
poc(get_s_s())
input(' --Made By U')
最后通过pyinstaller就可以打包成exe,方便游玩LOL时一键查看服务器状态信息,也可以修改图标和lol的一样更加有感觉。
补充
- rich库安装
pip install rich
- requests库安装
pip install requests
- python 官网:https://www.python.org/