# Export poor man's flight log import errno import os from os.path import join from sys import platform import time from config import config from companion import ship_map, commodity_map logfile = None def openlog(): global logfile if logfile: return try: logfile = open(join(config.get('outdir'), 'Flight Log.csv'), 'a+b') if platform != 'win32': # open for writing is automatically exclusive on Windows from fcntl import lockf, LOCK_SH, LOCK_NB lockf(logfile, LOCK_SH|LOCK_NB) logfile.seek(0, os.SEEK_END) if not logfile.tell(): logfile.write('Date,Time,System,Station,Ship,Cargo\r\n') except EnvironmentError as e: logfile = None if e.errno in [errno.EACCES, errno.EAGAIN]: raise Exception('Can\'t write "Flight Log.csv". Are you editing it in another app?') else: raise except: logfile = None raise def export(data): def elapsed(game_time): return '%3d:%02d:%02d' % ((game_time // 3600) % 3600, (game_time // 60) % 60, game_time % 60) querytime = config.getint('querytime') or int(time.time()) openlog() logfile.write('%s,%s,%s,%s,%s,%s\r\n' % ( time.strftime('%Y-%m-%d', time.localtime(querytime)), time.strftime('%H:%M:%S', time.localtime(querytime)), data['lastSystem']['name'], data['commander']['docked'] and data['lastStarport']['name'] or '', ship_map.get(data['ship']['name'], data['ship']['name']), ','.join([('%d %s' % (x['qty'], commodity_map.get(x['commodity'],x['commodity']))) for x in data['ship']['cargo']['items'] if x['commodity']!='drones']))) logfile.flush()