Как получить скин пользователя Minecraft (из Mojang) с помощью Python 3

В этой статье мы объясним вам, как легко получить скин игрока Minecraft по его имени пользователя с помощью Mojang API.

Спецификация скина

Скины подаются в формате PNG с серверов Mojang. Размеры изображения могут быть 64 на 32 пикселя или 64 на 64 пикселя. Первый использовался в версиях Minecraft до 1.8, а второй — в версиях Minecraft 1.8 и выше. Положение элементов осталось прежним в версии 1.8, однако в файл скинов были добавлены новые «оверлеи».

Чтобы получить текущий скин пользователя, вам потребуется доступ к Mojang API. В этом случае первый URL-адрес запроса будет:

  https://api.mojang.com/users/profiles/minecraft/{USERNAME}  

Вам необходимо заменить {USERNAME} на имя пользователя, которое вы ищете, например https://api.mojang.com/users/profiles/minecraft/elrubius вернет следующий ответ:

  {"name": "elrubius", "id": "11f1cc006cc84499a174bc9b7fa1982a"}  

Указанный запрос вернет UUID пользователь Minecraft. Теперь, чтобы запросить информацию о плеере, вам нужно будет запросить следующий URL:

  https://sessionserver.mojang.com/session/minecraft/profile/{  USER_UUID}  

Используя идентификатор игрока по его имени пользователя (полученному ранее), вы должны иметь возможность еще раз запросить у API информацию о текстурах, например https ://sessionserver.mojang. com/session/minecraft/profile/11f1cc006cc84499a174bc9b7fa1982a вернет следующий ответ JSON:

  {"id": "11f1cc006cc84499a174bc9b7fa1982a", "name": "elrubius", "properties"  : [{ "имя": "текстура", "значение": "ewogICJ0aW1lc3RhbXAiIDogMTU5NTY0ODQyODczOSwKICAicHJvZmlsZUlkIiA6ICIxMWYxY2MwMDZjYzg0NDk5YTE3NGJjOWI3ZmExOTgyYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJlbHJ1Yml1cyIsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hYzM3MzU3NTNjNzNjYzYwZWUxMjFkMzIyNGQ2ZDU2NDU5MzNlYWJjYmQzZDUyYzI3ZmZkMjEwNDNmMDQ4OTkyIgogICAgfQogIH0KfQ =="}]} код> 

Первый объект в массиве свойств будет содержать 2 ключа, которые определяют типа, в этом случае текстуры и его значение, в формате Base64:

ewogICJ0aW1lc3RhbXAiIDogMTU5NTY0NjgzNDMzMSwKICAicHJvZmlsZUlkIiA6ICIxMWYxY2MwMDZjYzg0NDk5YTE3NGJjOWI3ZmExOTgyYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJlbHJ1Yml1cyIsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVyb CIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hYzM3MzU3NTNjNzNjYzYwZWUxMjFkMzIyNGQ2ZDU2NDU5MzNlYWJjYmQzZDUyYzI3ZmZkMjEwNDNmMDQ4OTkyIgogICAgfQogIH0KfQ == код> Если расшифровать полученное значение из формата Base64, то выход будет предоставить следующие JSON:

# код> { «метка времени»: 1595646834331, «ProfileID»: «11f1cc006cc84499a174bc9b7fa1982a», «ProfileName»: «elrubius», «текстура»: { «КОЖИ»: { «URL»: «http://textures.minecraft.net/texture/ac3735753c73cc60ee121d3224d6d5645933eabcbd3d52c27ffd21043f048992 «}}}

Содержит скин пользователя в свойстве [textures] [SKIN] [url]: http://textures.minecraft.net/texture/ac3735753c73cc60ee121d3224d6d5645933eabcbd3d52c27ffd21043f048992 в данном случае следующее изображение (которое затем служит обложке как Content-Type: image/png):

Просто зная, как это работает, вы сможете написать свой собственный скрипт для получения оболочки au ser в minecraft, однако, если вы ищете простой и понятный способ сделать это, следующий скрипт Python 3 поможет вам лучше понять его.

Автоматизация для получения скина пользователя minecraft

Мы будем использовать пакет запросов для Python, который представляет собой элегантную и простую библиотеку HTTP для Python. Requests готов для создания устойчивых и надежных HTTP-говорящих приложений для нужд сегодняшнего дня. Вы можете установить его с помощью pip:

  запросы на установку pip3  

Убедившись, что библиотека установлена, вы можете использовать следующий скрипт ( get_skin. py ), чтобы загрузить скин пользователя в Minecraft:

  #!/usr/bin/env python3import ioimport sysimport jsonimport shutilfrom base64 import b64decodeimport requestsDEBUG = FalseSIMULATE =  Falseuserid_url = "https://api.mojang.com/users/profiles/minecraft/{username}"userinfo_url =" https://sessionserver.mojang.com/session/minecraft/profile/{userid}"class SimulatedResponse (объект  ): def __init __ (self, content, is_json, raw = None): self.content = content self.is_json = is_json self.status_code = 200 self.raw = raw def json (self): if self.is_json: вернуть json.  загружает (self.content) return Nonedef fail (msg, verbose_msg): print (msg, file = sys.stderr) if DEBUG: print (verbose_msg, file = sys.stderr) sys.exit (1) def find_texture_info (properties):  for prop в свойствах: if prop ['name'] == 'textures': return json.loads (b64decode (prop ['value'], validate = True) .decode ('utf-8')) return Nonedef get_url (  url, ** kwargs): if SIMULATE: content = None is_json = False raw = None # Эти файлы  не предусмотрено в репозитории git, потому что я считаю их # чувствительными.  Не стесняйтесь предлагать свои вместо них.  если url.startswith ('https://api.mojang.com/users/profiles/minecraft/'): с open ('simulated_userid_response.json', 'r') как f: content = f.read () is_json =  Истинный elif url.startswith ('https://sessionserver.mojang.com/session/minecraft/profile/'): с open ('simulated_userinfo_response.json', 'r') как f: content = f.read () is_json  = True иначе: с open ('simulated_skin_response.png', 'rb') как f: content = f.read () is_json = False raw = io.BytesIO (content) return SimulatedResponse (content, is_json, raw) else: return  request.get (url, ** kwargs) def main (): if len (sys.argv)  

Вы сможете запустить этот скрипт, используя:

  python get_skin.py {username}  

Это загрузит скин для данного имени пользователя в тот же каталог.

Удачного кодирования ❤️!

Оцените статью
Gamicon.ru
Добавить комментарий