100 lines
3.4 KiB
Python
Executable File
100 lines
3.4 KiB
Python
Executable File
import requests
|
|
import os
|
|
import discord
|
|
|
|
if os.getenv("ffxiv_token"):
|
|
token = "&private_key=%s" % os.getenv("ffxiv_token")
|
|
else:
|
|
token = ""
|
|
|
|
|
|
def make_request(name, server):
|
|
player_search = "https://xivapi.com/character/search?name=%s&server=%s%s" % (
|
|
name,
|
|
server,
|
|
token,
|
|
)
|
|
player_id = list(
|
|
filter(
|
|
lambda x: server.lower() in x["Server"].lower(),
|
|
requests.get(player_search).json()["Results"],
|
|
)
|
|
)[0]["ID"]
|
|
|
|
# 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%s" % (
|
|
player_id,
|
|
token,
|
|
)
|
|
player_blob = requests.get(request_url).json()
|
|
character = player_blob["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"]
|
|
job_icon = "https://xivapi.com/%s" % current_class["Job"]["Icon"]
|
|
|
|
if character["GrandCompany"]["Company"]:
|
|
grand_company = character["GrandCompany"]
|
|
|
|
if player_blob["FreeCompany"]:
|
|
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\nPlayer ID: %s"
|
|
% (character["Name"], character["ID"]),
|
|
icon_url="http://na.lodestonenews.com/images/thumbnail.png",
|
|
)
|
|
embed.set_thumbnail(url=job_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)
|
|
if character["GrandCompany"]["Company"]:
|
|
embed.add_field(
|
|
name="Grand Company",
|
|
value="%s of the %s"
|
|
% (grand_company["Rank"]["Name"], grand_company["Company"]["Name"]),
|
|
inline=False,
|
|
)
|
|
else:
|
|
embed.add_field(
|
|
name="Grand Company", value="Not in a Grand Company", inline=False
|
|
)
|
|
if player_blob["FreeCompany"]:
|
|
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,
|
|
)
|
|
else:
|
|
embed.add_field(
|
|
name="Free Company", value="Not in a Free Company", inline=False
|
|
)
|
|
|
|
embed.set_image(url=character["Portrait"])
|
|
embed.add_field(name="All other classes", value="-----", inline=False)
|
|
all_classes = character["ClassJobs"]
|
|
for job in all_classes:
|
|
job_icon = "https://xivapi.com%s" % job["Job"]["Icon"]
|
|
embed.add_field(
|
|
name=job["Job"]["Abbreviation"], value=job["Level"], inline=True
|
|
)
|
|
|
|
return embed
|