配合python的rich库实现高颜值LOL服务器状态查询

先上图看效果

LOL服务器状态

实现方法

第一步:获取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库

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

版权声明:
作者:Vapour
链接:https://jkboy.com/archives/10105.html
来源:随风的博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
配合python的rich库实现高颜值LOL服务器状态查询
在lol服务器状态查询的官方页面(https://lol.qq.com/act/a20150326dqpd/)上按下F12打开开发者工具按下ctrl+R刷新页面...
<<上一篇
下一篇>>