mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-15 08:40:34 +03:00
Send Cmdr ranks to EDSM
This commit is contained in:
parent
4d5b669bd4
commit
5a54c3126b
@ -498,6 +498,20 @@ class AppWindow:
|
||||
self.station['text'] = monitor.station or (EDDB.system(monitor.system) and self.STATION_UNDOCKED or '')
|
||||
if system_changed or station_changed:
|
||||
self.status['text'] = ''
|
||||
|
||||
if config.getint('output') & config.OUT_SYS_EDSM and not monitor.is_beta and monitor.ranks and (not entry or entry['event'] in ['Progress', 'Promotion']):
|
||||
# Send rank info to EDSM on startup or change
|
||||
try:
|
||||
self.status['text'] = _('Sending data to EDSM...')
|
||||
self.w.update_idletasks()
|
||||
self.edsm.setranks(monitor.ranks)
|
||||
self.status['text'] = ''
|
||||
except Exception as e:
|
||||
if __debug__: print_exc()
|
||||
self.status['text'] = unicode(e)
|
||||
if not config.getint('hotkey_mute'):
|
||||
hotkeymgr.play_bad()
|
||||
|
||||
if not entry or not monitor.mode:
|
||||
return # Fake event or in CQC
|
||||
|
||||
|
24
edsm.py
24
edsm.py
@ -143,3 +143,27 @@ class EDSM:
|
||||
else:
|
||||
self.result['img'] = EDSM._IMG_KNOWN
|
||||
self.syscache.add(system_name)
|
||||
|
||||
def setranks(self, ranks):
|
||||
if not ranks:
|
||||
return
|
||||
|
||||
try:
|
||||
url = 'https://www.edsm.net/api-commander-v1/set-ranks?commanderName=%s&apiKey=%s&fromSoftware=%s&fromSoftwareVersion=%s' % (
|
||||
urllib2.quote(config.get('edsm_cmdrname').encode('utf-8')),
|
||||
urllib2.quote(config.get('edsm_apikey')),
|
||||
urllib2.quote(applongname),
|
||||
urllib2.quote(appversion)
|
||||
)
|
||||
for k,v in ranks.iteritems():
|
||||
if v is not None:
|
||||
url += '&%s=%s' % (k, urllib2.quote('%d;%d' % v))
|
||||
r = self.opener.open(url, timeout=EDSM._TIMEOUT)
|
||||
reply = json.loads(r.read())
|
||||
(msgnum, msg) = reply['msgnum'], reply['msg']
|
||||
except:
|
||||
if __debug__: print_exc()
|
||||
raise Exception(_("Error: Can't connect to EDSM"))
|
||||
|
||||
if msgnum // 100 not in (1,4):
|
||||
raise Exception(_('Error: EDSM {MSG}').format(MSG=msg))
|
||||
|
11
monitor.py
11
monitor.py
@ -80,6 +80,7 @@ class EDLogs(FileSystemEventHandler):
|
||||
self.system = None
|
||||
self.station = None
|
||||
self.coordinates = None
|
||||
self.ranks = None
|
||||
|
||||
def set_callback(self, name, callback):
|
||||
if name in self.callbacks:
|
||||
@ -214,9 +215,11 @@ class EDLogs(FileSystemEventHandler):
|
||||
if entry['event'] == 'Fileheader':
|
||||
self.version = entry['gameversion']
|
||||
self.is_beta = 'beta' in entry['gameversion'].lower()
|
||||
self.ranks = None
|
||||
elif entry['event'] == 'LoadGame':
|
||||
self.cmdr = entry['Commander']
|
||||
self.mode = entry.get('GameMode') # 'Open', 'Solo', 'Group', or None for CQC
|
||||
self.ranks = { "Combat": None, "Trade": None, "Explore": None, "Empire": None, "Federation": None, "CQC": None }
|
||||
elif entry['event'] == 'NewCommander':
|
||||
self.cmdr = entry['Name']
|
||||
elif entry['event'] in ['Undocked']:
|
||||
@ -228,6 +231,14 @@ class EDLogs(FileSystemEventHandler):
|
||||
self.coordinates = None # Docked event doesn't include coordinates
|
||||
self.system = entry['StarSystem'] == 'ProvingGround' and 'CQC' or entry['StarSystem']
|
||||
self.station = entry.get('StationName') # May be None
|
||||
elif entry['event'] in ['Rank', 'Promotion'] and self.ranks:
|
||||
for k,v in entry.iteritems():
|
||||
if k in self.ranks:
|
||||
self.ranks[k] = (v,0)
|
||||
elif entry['event'] == 'Progress' and self.ranks:
|
||||
for k,v in entry.iteritems():
|
||||
if self.ranks.get(k) is not None:
|
||||
self.ranks[k] = (self.ranks[k][0], min(v, 100)) # perhaps not taken promotion mission yet
|
||||
return entry
|
||||
except:
|
||||
if __debug__:
|
||||
|
Loading…
x
Reference in New Issue
Block a user