You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.2 KiB
Python

import logging
import requests
from log.Log import Log
from version import VERSION
HEADERS = {'User-agent': f"DiscordMinecraft-Authenticator ({VERSION})(peery.coding@gmail.com)"}
def is_valid_user_name(user_name: str) -> bool:
"""
Checks if user_name is a valid minecraft player account by querying api.mojang.com if the profile exists
:param user_name:
:return:
"""
log = logging.getLogger("McAPI")
url = f"https://api.mojang.com/users/profiles/minecraft/{user_name}"
response = requests.get(url, headers=HEADERS)
if response.status_code == 404:
log.info(f"Looked up user name \"{user_name}\". Failed!")
return False
elif response.status_code == 200:
try:
uuid = response.json()['id']
except KeyError:
log.critical(f"Unexpected response from {url}! Response ({response.status_code}): {response.json()}")
return False
log.info(f"Looked up user name \"{user_name}\" (UUID: \"{uuid}\"). Success!")
return True
else:
log.error(f"Got unexpected status code from user_name lookup \"{user_name}\": {response.status_code}")
return False
def get_uuid_from_user_name(user_name: str) -> str:
"""
Checks if user_name is a valid minecraft player account by querying api.mojang.com if the profile exists
:param user_name:
:return:
"""
log = logging.getLogger("McAPI")
url = f"https://api.mojang.com/users/profiles/minecraft/{user_name}"
response = requests.get(url, headers=HEADERS)
if response.status_code == 404:
log.info(f"Looked up user name \"{user_name}\". Failed!")
return None
elif response.status_code == 200:
try:
uuid = response.json()['id']
log.info(f"Looked up user name \"{user_name}\" (UUID: \"{uuid}\"). Success!")
return uuid
except KeyError:
log.critical(f"Unexpected response from {url}! Response ({response.status_code}): {response.json()}")
return None
else:
log.error(f"Got unexpected status code from user_name lookup \"{user_name}\": {response.status_code}")
return None
if __name__ == "__main__":
Log.setup("DEBUG")
print(is_valid_user_name("MausKomant"))