mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-13 07:47:14 +03:00
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
# Export various CSV formats
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from os.path import join
|
|
import hashlib
|
|
import time
|
|
|
|
from config import config
|
|
|
|
bracketmap = {
|
|
0: '',
|
|
1: 'Low',
|
|
2: 'Med',
|
|
3: 'High',
|
|
}
|
|
|
|
# DEFAULT means semi-colon separation
|
|
# CSV means comma separation
|
|
(COMMODITY_DEFAULT, COMMODITY_CSV) = range(2)
|
|
|
|
|
|
def export(data, kind=COMMODITY_DEFAULT, filename=None):
|
|
querytime = config.get_int('querytime', default=int(time.time()))
|
|
|
|
if not filename:
|
|
filename = '{system}.{starport}.{time}.{kind}'.format(
|
|
system=data['lastSystem']['name'].strip(),
|
|
starport=data['lastStarport']['name'].strip(),
|
|
time=time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime)),
|
|
kind='csv'
|
|
)
|
|
filename = join(config.get_str('outdir'), filename)
|
|
|
|
if kind == COMMODITY_CSV:
|
|
sep = ';' # BUG: for fixing later after cleanup
|
|
header = sep.join(('System', 'Station', 'Commodity', 'Sell', 'Buy', 'Demand', '', 'Supply', '', 'Date', '\n'))
|
|
rowheader = sep.join((data['lastSystem']['name'], data['lastStarport']['name']))
|
|
|
|
else:
|
|
sep = ','
|
|
header = sep.join(
|
|
('System', 'Station', 'Commodity', 'Sell', 'Buy', 'Demand', '', 'Supply', '', 'Average', 'FDevID', 'Date\n')
|
|
)
|
|
|
|
rowheader = sep.join((data['lastSystem']['name'], data['lastStarport']['name']))
|
|
|
|
h = open(filename, 'wt') # codecs can't automatically handle line endings, so encode manually where required
|
|
h.write(header)
|
|
|
|
for commodity in data['lastStarport']['commodities']:
|
|
line = sep.join((
|
|
rowheader,
|
|
commodity['name'],
|
|
commodity['sellPrice'] and str(int(commodity['sellPrice'])) or '',
|
|
commodity['buyPrice'] and str(int(commodity['buyPrice'])) or '',
|
|
str(int(commodity['demand'])) if commodity['demandBracket'] else '',
|
|
bracketmap[commodity['demandBracket']],
|
|
str(int(commodity['stock'])) if commodity['stockBracket'] else '',
|
|
bracketmap[commodity['stockBracket']]
|
|
))
|
|
|
|
if kind == COMMODITY_DEFAULT:
|
|
line = sep.join((line, str(int(commodity['meanPrice'])), str(commodity['id']), data['timestamp'] + '\n'))
|
|
|
|
else:
|
|
line = sep.join((line, data['timestamp'] + '\n'))
|
|
|
|
h.write(line)
|
|
|
|
h.close()
|