1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00
royalnet/overwatch.py
2017-03-05 23:09:37 +01:00

97 lines
No EOL
3.4 KiB
Python

import asyncio
import requests
import functools
import strings as s
loop = asyncio.get_event_loop()
class NotFoundException(Exception):
pass
# Get player data
async def get_player_data(platform: str, region: str, battletag: str, **kwargs):
print("[Overwatch] Getting player info for: {platform} {region} {battletag}".format(platform=platform,
region=region,
battletag=battletag))
# Unofficial API requires - for discriminator numbers
battletag = battletag.replace("#", "-")
# GET the json unofficial API response
r = await loop.run_in_executor(None, functools.partial(requests.get, verify=False),
'https://api.lootbox.eu/{platform}/{region}/{battletag}/profile'.format(**locals()))
# Ensure the request is successful
if r.status_code == 200:
# Parse json and check for the status code inside the response
pj = r.json()
if "statusCode" in pj:
if pj["statusCode"] == 404:
raise NotFoundException("Player not found.")
else:
raise Exception("Unhandled API response.")
else:
# Success!
return pj
else:
raise Exception("Unhandled API response.")
# Convert rank to a medal
def rank_to_medal(rank):
# Unranked
if int(rank) == 0:
return s.overwatch_medal_list[0]
# Bronze
elif int(rank) < 1500:
return s.overwatch_medal_list[1]
# Silver
elif int(rank) < 2000:
return s.overwatch_medal_list[2]
# Gold
elif int(rank) < 2500:
return s.overwatch_medal_list[3]
# Platinum
elif int(rank) < 3000:
return s.overwatch_medal_list[4]
# Diamond
elif int(rank) < 3500:
return s.overwatch_medal_list[5]
# Master
elif int(rank) < 4000:
return s.overwatch_medal_list[6]
# Grandmaster
elif int(rank) <= 5000:
return s.overwatch_medal_list[7]
# ???
else:
raise NotFoundException("The medal does not exist.")
# Convert an url to a medal
def url_to_medal(rank: str):
# Bronze
if rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-1.png":
return s.overwatch_medal_list[1]
# Silver
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-2.png":
return s.overwatch_medal_list[2]
# Gold
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-3.png":
return s.overwatch_medal_list[3]
# Platinum
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-4.png":
return s.overwatch_medal_list[4]
# Diamond
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-5.png":
return s.overwatch_medal_list[5]
# Master
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-6.png":
return s.overwatch_medal_list[6]
# Grandmaster
elif rank == "https://blzgdapipro-a.akamaihd.net/game/rank-icons/season-2/rank-7.png":
return s.overwatch_medal_list[7]
else:
raise NotFoundException("The medal does not exist.")
def format_rankchange(rankchange: int):
if rankchange > 0:
return "+" + str(rankchange)
else:
return str(rankchange)