71 lines
2.9 KiB
Python
71 lines
2.9 KiB
Python
import requests
|
|
import os
|
|
import discord
|
|
|
|
token = os.getenv('ffxiv_token')
|
|
|
|
def parse_message(message):
|
|
name = message.split()[1] + '+' + message.split()[2]
|
|
server = message.split()[3]
|
|
|
|
return make_request(name=name, server=server)
|
|
|
|
|
|
def make_request(name, server):
|
|
player_search = "https://xivapi.com/character/search?name=%s&server=%s&private_key=%s" % (name, server, token)
|
|
print(player_search)
|
|
player_id = list(filter(
|
|
lambda x: server.lower() in x['Server'].lower(),
|
|
requests.get(player_search).json()['Results']
|
|
))[0]['ID']
|
|
import pprint
|
|
pp = pprint.PrettyPrinter(indent=2, compact=True)
|
|
|
|
# if adding extended=1 to the query, you'll see some image files, eg. /cj/1/blackmage.png
|
|
# prepend these with https://xivapi.com/ to get a useable url
|
|
# https://xivapi.com//cj/1/blackmage.png
|
|
request_url = "https://xivapi.com/character/%s?extended=1&data=CJ,FC&private_key=%s" % (player_id, token)
|
|
print(request_url)
|
|
player_blob = requests.get(request_url).json()
|
|
character = player_blob['Character']
|
|
# pp.pprint(player_blob)
|
|
# pp.pprint(character)
|
|
|
|
current_class = character['ActiveClassJob']
|
|
current_class_name = current_class['Job']['Name']
|
|
current_class_level = character['ActiveClassJob']['Level']
|
|
xp_to_level_up = current_class['ExpLevelTogo']
|
|
class_icon = "https://xivapi.com/%s" % current_class['Job']['Icon']
|
|
|
|
grand_company = character['GrandCompany']
|
|
|
|
free_company = player_blob['FreeCompany']
|
|
fc_member_count = free_company['ActiveMemberCount']
|
|
fc_name = free_company['Name']
|
|
fc_slogan = free_company['Slogan']
|
|
fc_tag = free_company['Tag']
|
|
fc_rank = free_company['Rank']
|
|
fc_estate = free_company['Estate']
|
|
fc_plot = fc_estate['Plot']
|
|
|
|
|
|
embed = discord.Embed(description=character['Name'], color=0x428bca, type="rich")
|
|
embed.set_author(name="FFXIV API bullshit for %s, player ID: %s" % (character['Name'], character['ID']), icon_url="http://na.lodestonenews.com/images/thumbnail.png")
|
|
embed.set_thumbnail(url=class_icon)
|
|
embed.add_field(name="Current Class", value="%s - Lvl: %s" % (current_class_name, current_class_level), inline=True)
|
|
embed.add_field(name="XP to level up", value=xp_to_level_up, inline=True)
|
|
embed.add_field(name="Race", value=character['Race']['Name'], inline=True)
|
|
embed.add_field(name="Grand Company", value="%s of the %s" % (grand_company['Rank']['Name'], grand_company['Company']['Name']), inline=False)
|
|
embed.add_field(
|
|
name="Free Company: %s (%s)" % (fc_name, fc_tag),
|
|
value="\nActive Members: %s\nFC Rank: %s\nFC Estate: %s" % (
|
|
fc_member_count, fc_rank, fc_plot
|
|
),
|
|
inline=False
|
|
)
|
|
embed.set_image(url=character['Portrait'])
|
|
# embed.add_field(name=':hospital: Recovered Cases :hospital:', value=recovered, inline=False)
|
|
# embed.add_field(name=':skull_crossbones: Deaths :skull_crossbones:', value=deaths, inline=False)
|
|
# embed.add_field(name='Source', value='https://github.com/CSSEGISandData/COVID-19')
|
|
return embed
|