mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-08 05:20:03 +03:00
55 lines
2.4 KiB
Python
55 lines
2.4 KiB
Python
# Export to Trade Dangerous
|
|
|
|
from os.path import join
|
|
from collections import defaultdict
|
|
import codecs
|
|
import numbers
|
|
from operator import itemgetter
|
|
from platform import system
|
|
from sys import platform
|
|
import time
|
|
|
|
from config import applongname, appversion, config
|
|
|
|
demandbracketmap = { 0: '?',
|
|
1: 'L',
|
|
2: 'M',
|
|
3: 'H', }
|
|
stockbracketmap = { 0: '-',
|
|
1: 'L',
|
|
2: 'M',
|
|
3: 'H', }
|
|
|
|
def export(data):
|
|
|
|
querytime = config.getint('querytime') or int(time.time())
|
|
|
|
filename = join(config.get('outdir'), '%s.%s.%s.prices' % (data['lastSystem']['name'].strip(), data['lastStarport']['name'].strip(), time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
|
|
|
|
timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(data['timestamp'], '%Y-%m-%dT%H:%M:%SZ'))
|
|
|
|
# Format described here: https://bitbucket.org/kfsone/tradedangerous/wiki/Price%20Data
|
|
h = open(filename, 'wt') # codecs can't automatically handle line endings, so encode manually where required
|
|
h.write(('#! trade.py import -\n# Created by %s %s on %s%s.\n#\n# <item name> <sellCR> <buyCR> <demand> <stock> <timestamp>\n\n@ %s/%s\n' % (applongname, appversion, platform=='darwin' and "Mac OS" or system(), not config.getint('anonymous') and ' for Cmdr '+data['commander']['name'].strip() or '', data['lastSystem']['name'].strip(), data['lastStarport']['name'].strip())).encode('utf-8'))
|
|
|
|
# sort commodities by category
|
|
bycategory = defaultdict(list)
|
|
for commodity in data['lastStarport']['commodities']:
|
|
bycategory[commodity['categoryname']].append(commodity)
|
|
|
|
for category in sorted(bycategory):
|
|
h.write(' + %s\n' % category)
|
|
# corrections to commodity names can change the sort order
|
|
for commodity in sorted(bycategory[category], key=itemgetter('name')):
|
|
h.write(' %-23s %7d %7d %9s%c %8s%c %s\n' % (
|
|
commodity['name'],
|
|
int(commodity['sellPrice']),
|
|
int(commodity['buyPrice']),
|
|
int(commodity['demand']) if commodity['demandBracket'] else '',
|
|
demandbracketmap[commodity['demandBracket']],
|
|
int(commodity['stock']) if commodity['stockBracket'] else '',
|
|
stockbracketmap[commodity['stockBracket']],
|
|
timestamp))
|
|
|
|
h.close()
|