def get(self, token): """ token is urlencode({'n':cName, 'cid':cID, 'rtok':cli.token['refresh_token']}) """ sdb = StaticDB() data = parse_qs(token) data = parse_qs(token) cName = data['n'][0] cid = data['cid'][0] rTok = data['rtok'][0] print(rTok) cli = None try: # refresh page, just relogin instead of storing tokens between sessions (bad) cli = api.ESIClient(rTok, refresh=True) except APIException: return make_response(redirect('/api/v1/login')) skillset_name = 'test.csv' skillset = {} skillset_name = 'test.csv' with open(skillset_name, 'r') as csvfile: skillsreader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in skillsreader: skill_group, skill_name, required_level = row required_level = int(required_level) if not 1 <= required_level <= 5: continue skill_id = sdb.skill_id(skill_name) if skill_group not in skillset: skillset[skill_group] = [] skillset[skill_group].append((skill_name, skill_id, required_level)) #api_args = {'keyID': argv[2], 'vCode': argv[3]} title = "Skillcheck - %s" % skillset_name html = '<!DOCTYPE html>' html += '<html>' html += '<head>' html += '<title>%s</title>' % title html += '<link rel="stylesheet" type="text/css" href="/static/style.css" />' html += '</head>' html += '<body>' html += '<br><br>' html += '<a href=/api/v1/login><img src=https://web.ccpgamescdn.com/eveonlineassets/developers/eve-sso-login-black-small.png /></a>' html += '<br><br>' html += 're-login to see other toons on account' html += '<h1>%s</h1>' % title char_id, char_name = (cid, cName) charsheet = api.get_skills(cli, cid) trained_skills = {} for skill in charsheet['skills']: skill_id = int(skill['skill_id']) skill_level = int(skill['trained_skill_level']) skill_name = sdb.skill_name(skill_id) trained_skills[skill_name] = required_level html += '<h2>{0}</h2>'.format(char_name) low_skill_counter = 0 for group in sorted(skillset.keys()): groupheader_printed = False for skill in sorted(skillset[group]): skill_name, skill_id, required_level = skill if skill_name in trained_skills: trained_level = trained_skills[skill_name] else: trained_level = 0 if trained_level < required_level: if not groupheader_printed: html += '<h3>{0}</h3>'.format(group) html += '<table class="skills">' groupheader_printed = True html += '<tr class="lowskill">' html += '<td><a class="igblink" onclick="CCPEVE.showInfo({0})">{1}</a></td>'.format(skill_id, skill_name) html += '<td><img style="background:url(/static/gfx/level{1}_red.png)" src="/static/gfx/level{0}.png" alt="Level {0}/{1}" /></td>'.format(trained_level, required_level) html += '</tr>' low_skill_counter += 1 if groupheader_printed: html += '</table>' if low_skill_counter == 0: html += '<span>Skill requirements met</span>' html += '</body></html>' return html
# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. """skillcheck.py: """ from sys import argv import csv import eveapi_simple as api from evestatic import StaticDB sdb = StaticDB() skillset_name = argv[1] skillset = {} with open(skillset_name + '.csv', 'rb') as csvfile: skillsreader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in skillsreader: skill_group, skill_name, required_level = row required_level = int(required_level) if not 1 <= required_level <= 5: continue skill_id = sdb.skill_id(skill_name) if skill_group not in skillset: skillset[skill_group] = [] skillset[skill_group].append((skill_name, skill_id, required_level)) api_args = {'keyID': argv[2], 'vCode': argv[3]} characters = []
characters = [] key_info = api.query('/account/APIKeyInfo', api_args) for character in key_info.result.key.rowset.row: char_id = character.attrib['characterID'] char_name = character.attrib['characterName'] characters.append((char_id, char_name)) print('<!DOCTYPE html>') print('<html>') print('<head>') print('<title>API key info</title>') print('<link rel="stylesheet" type="text/css" href="style.css" />') print('</head>') print('<body>') sdb = StaticDB() for character in characters: char_id, char_name = character api_args['characterID'] = char_id charsheet = api.query('/char/CharacterSheet', api_args) skills = {} for skill in charsheet.xpath("result/rowset[@name='skills']/row"): skill_id = int(skill.attrib['typeID']) skill_level = int(skill.attrib['level']) skill_name = sdb.skill_name(skill_id) skill_group = sdb.skill_group(skill_id) if skill_group not in skills: skills[skill_group] = [] skills[skill_group].append((skill_name, skill_id, skill_level)) print('<h2>%s</h2>' % char_name)
def get(self): print('=' * 20) characters = [] token = request.args.get('code') cli = None try: # refresh page, just relogin instead of storing tokens between sessions (bad) cli = api.ESIClient(token) except APIException: return make_response(redirect('/api/v1/login')) data = cli.get_info() cID = data['CharacterID'] cName = data['CharacterName'] enc_data = urlencode({ 'n': cName, 'cid': cID, 'rtok': cli.token['refresh_token'] }) # need a quick way to access other route html = '<!DOCTYPE html>' html += '<html>' html += '<head>' html += '<title>API key info</title>' html += '<link rel="stylesheet" type="text/css" href="/static/style.css" />' html += '</head>' html += '<body>' html += '<a href=/api/v1/skillcheck/{0}>skillcheck</a>'.format( enc_data) html += '<br><br>' html += '<a href=/api/v1/login><img src=https://web.ccpgamescdn.com/eveonlineassets/developers/eve-sso-login-black-small.png /></a>' html += '<br><br>' html += 're-login to see other toons on account' html += '</body>' html += '</html>' sdb = StaticDB() charsheet = api.get_skills(cli, cID) skills = {} for skill in charsheet['skills']: skill_id = int(skill['skill_id']) skill_level = int(skill['trained_skill_level']) skill_name = sdb.skill_name(skill_id) skill_group = sdb.skill_group(skill_id) if skill_group not in skills: skills[skill_group] = [] skills[skill_group].append((skill_name, skill_id, skill_level)) html += '<h2>{0}</h2>'.format(cName) for group in sorted(skills.keys()): html += '<h3>{0}</h3>'.format(group) html += '<table class="skills">' for skill in sorted(skills[group]): skill_name, skill_id, skill_level = skill html += '<tr>' html += '<td>' if skill_level < 5 else '<td class="l5skill">' html += '<a class="igblink" onclick="CCPEVE.showInfo({0})">{1}</a></td>'.format( skill_id, skill_name) # rip igb o7 html += '<td><img src="/static/gfx/level{0}.png" alt="Level {1}" /></td>'.format( skill_level, skill_level) html += '</tr>' html += '</table>' html += '</body>' html += '</html>' return html
# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. """skillcheck.py: """ from sys import argv import csv import eveapi_simple as api from evestatic import StaticDB sdb = StaticDB() skillset_name = argv[1] skillset = {} with open(skillset_name + '.csv', 'rb') as csvfile: skillsreader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in skillsreader: skill_group, skill_name, required_level = row required_level = int(required_level) if not 1 <= required_level <= 5: continue skill_id = sdb.skill_id(skill_name) if skill_group not in skillset: skillset[skill_group] = [] skillset[skill_group].append((skill_name, skill_id, required_level)) api_args = {'keyID': argv[2], 'vCode': argv[3]} characters = [] key_info = api.query('/account/APIKeyInfo', api_args) for character in key_info.result.key.rowset.row: