mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-23 12:20:30 +03:00
Skip EDSM coordinates lookup for populated systems.
This commit is contained in:
parent
9afece42c8
commit
ef75242291
@ -276,7 +276,7 @@ class AppWindow:
|
||||
|
||||
# Stuff we can do while waiting for retry
|
||||
|
||||
self.edsm.start_lookup(self.system['text'])
|
||||
self.edsm.start_lookup(self.system['text'], EDDB.system(self.system['text']))
|
||||
self.system['image'] = self.edsm.result['img']
|
||||
self.w.after(int(EDSM_POLL * 1000), self.edsmpoll)
|
||||
|
||||
@ -297,7 +297,7 @@ class AppWindow:
|
||||
h.write(json.dumps(data, indent=2, sort_keys=True))
|
||||
|
||||
if not retrying:
|
||||
self.edsm.start_lookup(self.system['text'])
|
||||
self.edsm.start_lookup(self.system['text'], EDDB.system(self.system['text']))
|
||||
self.system['image'] = self.edsm.result['img']
|
||||
self.w.after(int(EDSM_POLL * 1000), self.edsmpoll)
|
||||
|
||||
|
5
eddb.py
5
eddb.py
@ -44,6 +44,11 @@ if __name__ == "__main__":
|
||||
|
||||
stations = json.loads(open('stations_lite.json').read())
|
||||
|
||||
# check that all populated systems have known coordinates
|
||||
coords = dict([(x['id'], x['x'] or x['y'] or x['z']) for x in json.loads(open('systems.json').read())])
|
||||
for x in stations:
|
||||
assert x['system_id'] == 17072 or coords[x['system_id']], (x['system_id'], systems[x['system_id']])
|
||||
|
||||
# system_id by system_name - populated systems only
|
||||
system_ids = dict([(systems[x['system_id']], x['system_id']) for x in stations])
|
||||
cPickle.dump(system_ids, open('systems.p', 'wb'), protocol = cPickle.HIGHEST_PROTOCOL)
|
||||
|
30
edsm.py
30
edsm.py
@ -22,10 +22,10 @@ class EDSM:
|
||||
EDSM._IMG_NEW = tk.PhotoImage(data = 'R0lGODlhEAAQAMZwANKVHtWcIteiHuiqLPCuHOS1MN22ZeW7ROG6Zuu9MOy+K/i8Kf/DAuvCVf/FAP3BNf/JCf/KAPHHSv7ESObHdv/MBv/GRv/LGP/QBPXOPvjPQfjQSvbRSP/UGPLSae7Sfv/YNvLXgPbZhP7dU//iI//mAP/jH//kFv7fU//fV//ebv/iTf/iUv/kTf/iZ/vgiP/hc/vgjv/jbfriiPriiv7ka//if//jd//sJP/oT//tHv/mZv/sLf/rRP/oYv/rUv/paP/mhv/sS//oc//lkf/mif/sUf/uPv/qcv/uTv/uUv/vUP/qhP/xP//pm//ua//sf//ubf/wXv/thv/tif/slv/tjf/smf/yYP/ulf/2R//2Sv/xkP/2av/0gP/ylf/2df/0i//0j//0lP/5cP/7a//1p//5gf/7ev/3o//2sf/5mP/6kv/2vP/3y//+jP///////////////////////////////////////////////////////////////yH5BAEKAH8ALAAAAAAQABAAAAePgH+Cg4SFhoJKPIeHYT+LhVppUTiPg2hrUkKPXWdlb2xHJk9jXoNJQDk9TVtkYCUkOy4wNjdGfy1UXGJYOksnPiwgFwwYg0NubWpmX1ArHREOFYUyWVNIVkxXQSoQhyMoNVUpRU5EixkcMzQaGy8xhwsKHiEfBQkSIg+GBAcUCIIBBDSYYGiAAUMALFR6FAgAOw==')
|
||||
EDSM._IMG_ERROR = tk.PhotoImage(data = 'R0lGODlhDgAOAIABAAAAAP///yH5BAEKAAEALAAAAAAOAA4AAAIcjIGJxqHaIJPypBYvzms77X1dWHlliKYmuI5GAQA7') # BBC Mode 5 '?'
|
||||
|
||||
def start_lookup(self, system_name):
|
||||
def start_lookup(self, system_name, known=0):
|
||||
self.cancel_lookup()
|
||||
self.result = { 'img': None, 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': False } # default URL
|
||||
self.thread = threading.Thread(target = self.worker, name = 'EDSM worker', args = (system_name, self.result))
|
||||
self.result = { 'img': '', 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': False } # default URL
|
||||
self.thread = threading.Thread(target = known and self.known or self.worker, name = 'EDSM worker', args = (system_name, self.result))
|
||||
self.thread.daemon = True
|
||||
self.thread.start()
|
||||
|
||||
@ -45,19 +45,23 @@ class EDSM:
|
||||
result['done'] = True # give feedback immediately
|
||||
requests.get('http://www.edsm.net/api-v1/url?sysname=%s' % urllib.quote(system_name), timeout=EDSM._TIMEOUT) # creates system
|
||||
elif data.get('coords'):
|
||||
# Prefer to send user to "Show distances" page for systems with known coordinates
|
||||
result['img'] = EDSM._IMG_KNOWN
|
||||
result['done'] = True # give feedback immediately
|
||||
try:
|
||||
r = requests.get('http://www.edsm.net/api-v1/url?sysname=%s' % urllib.quote(system_name), timeout=EDSM._TIMEOUT)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
result['url'] = data['url']['show-system'].replace('\\','')
|
||||
except:
|
||||
if __debug__: print_exc()
|
||||
self.known(system_name, result)
|
||||
else:
|
||||
result['img'] = EDSM._IMG_UNKNOWN
|
||||
except:
|
||||
if __debug__: print_exc()
|
||||
result['img'] = EDSM._IMG_ERROR
|
||||
result['done'] = True
|
||||
|
||||
# Worker for known known systems - saves initial EDSM API call
|
||||
def known(self, system_name, result):
|
||||
# Prefer to send user to "Show distances" page for systems with known coordinates
|
||||
result['img'] = EDSM._IMG_KNOWN
|
||||
result['done'] = True # give feedback immediately
|
||||
try:
|
||||
r = requests.get('http://www.edsm.net/api-v1/url?sysname=%s' % urllib.quote(system_name), timeout=EDSM._TIMEOUT)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
result['url'] = data['url']['show-system'].replace('\\','')
|
||||
except:
|
||||
if __debug__: print_exc()
|
||||
|
Loading…
x
Reference in New Issue
Block a user