elite-scripts/explorationtools.py
alterNERDtive c255277e89 explorationtools: added findCommander
Let’s you, duh, find a Commander’s last known system if they are on EDSM
and have their flight logs public.
2020-01-05 19:20:20 +01:00

87 lines
2.6 KiB
Python
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK
import argcomplete, argparse
import math
import sys
from pyEDSM.edsm.exception import ServerError, NotFoundError
from pyEDSM.edsm.models import System, Commander
# ===========================================================================
def distanceBetween(system1, system2):
try:
coords1 = System(system1).coords
coords2 = System(system2).coords
except ServerError as e:
print(e)
sys.exit(1)
except NotFoundError as e:
print(e)
syst.exit(2)
else:
print(int(round(math.sqrt( (coords1['x']-coords2['x'])**2
+ (coords1['y']-coords2['y'])**2
+ (coords1['z']-coords2['z'])**2 ),0)))
sys.exit(0)
def findCommander(name):
try:
currentSystem = Commander(name).currentSystem
except ServerError as e:
print(e)
sys.exit(1)
except NotFoundError as e:
print(e)
sys.exit(2)
else:
print(currentSystem)
sys.exit(0)
def getBodyCount(system):
try:
bodyCount = System(system).bodyCount
except ServerError as e:
print(e)
sys.exit(1)
except NotFoundError as e:
print(e)
sys.exit(2)
else:
print(bodyCount)
sys.exit(0)
# ===========================================================================
parser = argparse.ArgumentParser(description="A collection of tools useful for "
+ "exploration.")
subparsers = parser.add_subparsers(title="subcommands", help="sub-command help",
dest="subCommand")
parser_bodycount = subparsers.add_parser("bodycount",
help="Returns the number of bodies in a system. Will exit with code 1 on "
+ "server error and code 2 if the system could not be found in EDSM.")
parser_bodycount.add_argument("system", nargs=1)
parser_distance = subparsers.add_parser("distancebetween",
help="Calculates the distance between two systems. Will exit with code 1 "
+ "on server error and code 2 if (one of) the systems could not be found "
+ "on EDSM.")
parser_distance.add_argument("system", nargs=2)
parser_find = subparsers.add_parser("findCommander",
help="Attempts to find a CMDRs last known position. Will exit with code 1 "
+ "on server error and code 2 if the CMDR could not be found on EDSM.")
parser_find.add_argument("name")
argcomplete.autocomplete(parser)
args = parser.parse_args()
# ===========================================================================
if args.subCommand == "bodycount":
getBodyCount(args.system[0])
elif args.subCommand == "distancebetween":
distanceBetween(args.system[0], args.system[1])
elif args.subCommand == "findCommander":
findCommander(args.name)