mirror of
https://github.com/yawaflua/Py-SPW.git
synced 2025-12-10 12:29:30 +02:00
101 lines
3.1 KiB
Python
101 lines
3.1 KiB
Python
import requests as rq
|
|
from mojang import MojangAPI
|
|
from typing import Optional
|
|
|
|
from . import errors as err
|
|
|
|
|
|
class SkinPart:
|
|
def __init__(self, url: str):
|
|
self.__skin_part_url = url
|
|
|
|
def __str__(self):
|
|
return self.get_url()
|
|
|
|
def __bytes__(self):
|
|
return self.get_image()
|
|
|
|
def get_url(self) -> str:
|
|
return self.__skin_part_url
|
|
|
|
def get_image(self) -> bytes:
|
|
try:
|
|
visage_surgeplay_response = rq.get(self.__skin_part_url)
|
|
if visage_surgeplay_response.status_code != 200:
|
|
raise err.SurgeplayApiError(f'HTTP status: {visage_surgeplay_response.status_code}')
|
|
return visage_surgeplay_response.content
|
|
|
|
except rq.exceptions.ConnectionError as error:
|
|
raise err.SurgeplayApiError(error)
|
|
|
|
|
|
class Cape:
|
|
def __init__(self, url: Optional[str]):
|
|
self.__skin_part_url = url
|
|
|
|
def __str__(self):
|
|
if self.__skin_part_url is None:
|
|
return 'None'
|
|
|
|
return self.get_url()
|
|
|
|
def __bytes__(self):
|
|
image = self.get_image()
|
|
if image is None:
|
|
return bytes(0)
|
|
|
|
return image
|
|
|
|
def get_url(self) -> Optional[str]:
|
|
if self.__skin_part_url is None:
|
|
return None
|
|
|
|
return self.__skin_part_url
|
|
|
|
def get_image(self) -> Optional[bytes]:
|
|
if self.__skin_part_url is None:
|
|
return None
|
|
|
|
try:
|
|
visage_surgeplay_response = rq.get(self.__skin_part_url)
|
|
if visage_surgeplay_response.status_code != 200:
|
|
raise err.SurgeplayApiError(f'HTTP status: {visage_surgeplay_response.status_code}')
|
|
return visage_surgeplay_response.content
|
|
|
|
except rq.exceptions.ConnectionError as error:
|
|
raise err.SurgeplayApiError(error)
|
|
|
|
|
|
class Skin:
|
|
__visage_surgeplay_url = 'https://visage.surgeplay.com/'
|
|
|
|
def __init__(self, uuid: str):
|
|
self.__uuid = uuid
|
|
|
|
def __str__(self):
|
|
return self.get_skin().__str__()
|
|
|
|
def get_face(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/face/{image_size}/{self.__uuid}')
|
|
|
|
def get_front(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/front/{image_size}/{self.__uuid}')
|
|
|
|
def get_front_full(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/frontfull/{image_size}/{self.__uuid}')
|
|
|
|
def get_head(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/head/{image_size}/{self.__uuid}')
|
|
|
|
def get_bust(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/bust/{image_size}/{self.__uuid}')
|
|
|
|
def get_full(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/full/{image_size}/{self.__uuid}')
|
|
|
|
def get_skin(self, image_size: int = 64) -> SkinPart:
|
|
return SkinPart(f'https://visage.surgeplay.com/skin/{image_size}/{self.__uuid}')
|
|
|
|
def get_cape(self) -> Cape:
|
|
return Cape(MojangAPI.get_profile(self.__uuid).cape_url)
|