mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-04 19:40:02 +03:00
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""
|
|
loadout.py - Export ship loadout in Companion API json format.
|
|
|
|
Copyright (c) EDCD, All Rights Reserved
|
|
Licensed under the GNU General Public License.
|
|
See LICENSE file.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import re
|
|
import time
|
|
from os import listdir
|
|
from pathlib import Path
|
|
import companion
|
|
import util_ships
|
|
from config import config
|
|
from EDMCLogging import get_main_logger
|
|
|
|
logger = get_main_logger()
|
|
|
|
|
|
def export(data: companion.CAPIData, requested_filename: str | None = None) -> None:
|
|
"""
|
|
Write Ship Loadout in Companion API JSON format.
|
|
|
|
:param data: CAPI data containing ship loadout.
|
|
:param requested_filename: Name of file to write to.
|
|
"""
|
|
string = json.dumps(
|
|
companion.ship(data), cls=companion.CAPIDataEncoder,
|
|
ensure_ascii=False, indent=2, sort_keys=True, separators=(',', ': ')
|
|
) # pretty print
|
|
|
|
if requested_filename is not None and requested_filename:
|
|
with open(requested_filename, 'wt') as h:
|
|
h.write(string)
|
|
return
|
|
if not requested_filename:
|
|
logger.error(f"{requested_filename=} is not valid")
|
|
return
|
|
|
|
# Look for last ship of this type
|
|
ship = util_ships.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
|
|
regexp = re.compile(re.escape(ship) + r'\.\d\d\d\d-\d\d-\d\dT\d\d\.\d\d\.\d\d\.txt')
|
|
oldfiles = sorted([x for x in listdir(config.get_str('outdir')) if regexp.match(x)])
|
|
if oldfiles:
|
|
with open(Path(config.get_str('outdir')) / Path(oldfiles[-1]), 'rU') as h:
|
|
if h.read() == string:
|
|
return # same as last time - don't write
|
|
|
|
query_time = config.get_int('querytime', default=int(time.time()))
|
|
|
|
# Write
|
|
|
|
output_directory = Path(config.get_str('outdir'))
|
|
ship_time = time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(query_time))
|
|
file_path = output_directory / f"{ship}.{ship_time}.txt"
|
|
|
|
with open(file_path, 'wt') as h:
|
|
h.write(string)
|