mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-09 11:52:27 +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 '')
|
self.station['text'] = monitor.station or (EDDB.system(monitor.system) and self.STATION_UNDOCKED or '')
|
||||||
if system_changed or station_changed:
|
if system_changed or station_changed:
|
||||||
self.status['text'] = ''
|
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:
|
if not entry or not monitor.mode:
|
||||||
return # Fake event or in CQC
|
return # Fake event or in CQC
|
||||||
|
|
||||||
|
24
edsm.py
24
edsm.py
@ -143,3 +143,27 @@ class EDSM:
|
|||||||
else:
|
else:
|
||||||
self.result['img'] = EDSM._IMG_KNOWN
|
self.result['img'] = EDSM._IMG_KNOWN
|
||||||
self.syscache.add(system_name)
|
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.system = None
|
||||||
self.station = None
|
self.station = None
|
||||||
self.coordinates = None
|
self.coordinates = None
|
||||||
|
self.ranks = None
|
||||||
|
|
||||||
def set_callback(self, name, callback):
|
def set_callback(self, name, callback):
|
||||||
if name in self.callbacks:
|
if name in self.callbacks:
|
||||||
@ -214,9 +215,11 @@ class EDLogs(FileSystemEventHandler):
|
|||||||
if entry['event'] == 'Fileheader':
|
if entry['event'] == 'Fileheader':
|
||||||
self.version = entry['gameversion']
|
self.version = entry['gameversion']
|
||||||
self.is_beta = 'beta' in entry['gameversion'].lower()
|
self.is_beta = 'beta' in entry['gameversion'].lower()
|
||||||
|
self.ranks = None
|
||||||
elif entry['event'] == 'LoadGame':
|
elif entry['event'] == 'LoadGame':
|
||||||
self.cmdr = entry['Commander']
|
self.cmdr = entry['Commander']
|
||||||
self.mode = entry.get('GameMode') # 'Open', 'Solo', 'Group', or None for CQC
|
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':
|
elif entry['event'] == 'NewCommander':
|
||||||
self.cmdr = entry['Name']
|
self.cmdr = entry['Name']
|
||||||
elif entry['event'] in ['Undocked']:
|
elif entry['event'] in ['Undocked']:
|
||||||
@ -228,6 +231,14 @@ class EDLogs(FileSystemEventHandler):
|
|||||||
self.coordinates = None # Docked event doesn't include coordinates
|
self.coordinates = None # Docked event doesn't include coordinates
|
||||||
self.system = entry['StarSystem'] == 'ProvingGround' and 'CQC' or entry['StarSystem']
|
self.system = entry['StarSystem'] == 'ProvingGround' and 'CQC' or entry['StarSystem']
|
||||||
self.station = entry.get('StationName') # May be None
|
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
|
return entry
|
||||||
except:
|
except:
|
||||||
if __debug__:
|
if __debug__:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user