dragon-bot/app/ffxiv.py

72 lines
3.0 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\nPlayer 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.set_footer(text='Feel free to use my refer a friend code: MA9Q49CJ')
# 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