Попытка разобрать Minecraft MOTD с Python - PullRequest
0 голосов
/ 08 февраля 2020

Как видно из названия, это то, что я пытаюсь сделать здесь. Краткое объяснение о M C MOTD: § + что-то = цвет (§0 = черный, §a = зеленый e cc. Больше объяснений: https://imgur.com/a/NkJtaRQ)

Решение я придумал вот что:

RESET = '\033[0m'
def get_color_escape(r, g, b, bg=False):
return '\033[{};2;{};{};{}m'.format(48 if bg else 38, r, g, b)

, чтобы получить правильные коды перехода. После этого я объявил эту другую функцию, чтобы помочь мне разделить es c .codes:

def charToCode(a):
a = a + 1
styleMap = {
    "§0" : get_color_escape(0,0,0),
    "§1" : get_color_escape(0,0,170),
    "§2" : get_color_escape(0,170,0),
    "§3" : get_color_escape(0,170,170),
    "§4" : get_color_escape(170,0,0),
    "§5" : get_color_escape(170,0,170),
    "§6" : get_color_escape(255,170,0),
    "§7" : get_color_escape(170,170,170),
    "§8" : get_color_escape(85,85,85),
    "§9" : get_color_escape(85,85,255),
    "§a" : get_color_escape(85,255,85),
    "§b" : get_color_escape(85,85,255),
    "§c" : get_color_escape(255,85,85),
    "§d" : get_color_escape(255,85,255),
    "§e" : get_color_escape(255,255,85),
    "§f" : get_color_escape(255,255,255),
    "§l" : RESET,
    "§m" : RESET,
    "§n" : RESET,
    "§o" : RESET
}
return styleMap.get(str(a))

После получения ответа от API мне нужно преобразовать это «что-то» в правильный цвет строки в терминале. Вот мое решение:

for char in motd:
    motdparsed = motd.translate({ord("§"):charToCode(motd.find("§"))})

Проблема в том, что я не могу понять, почему параметр "a" в функции charToCode не может быть принят методом get; и даже если бы это сработало, я не знаю, работает ли это.

...