added findsystem command

This commit is contained in:
alterNERDtive 2020-01-13 21:23:41 +01:00
parent bfad499050
commit 37555b0a2e
3 changed files with 55 additions and 9 deletions

View file

@ -46,7 +46,7 @@ optional arguments:
``` ```
usage: explorationtools.py [-h] usage: explorationtools.py [-h]
{bodycount,distancebetween,findcommander,systemlist} {bodycount,distancebetween,findcommander,findsystem,systemlist}
... ...
A collection of tools useful for exploration. A collection of tools useful for exploration.
@ -55,7 +55,7 @@ optional arguments:
-h, --help show this help message and exit -h, --help show this help message and exit
subcommands: subcommands:
{bodycount,distancebetween,findcommander,systemlist} {bodycount,distancebetween,findcommander,findsystem,systemlist}
sub-command help sub-command help
bodycount Returns the number of bodies in a system. Will exit bodycount Returns the number of bodies in a system. Will exit
with code 1 on server error and code 2 if the system with code 1 on server error and code 2 if the system
@ -66,6 +66,9 @@ subcommands:
findcommander Attempts to find a CMDRs last known position. Will findcommander Attempts to find a CMDRs last known position. Will
exit with code 1 on server error and code 2 if the exit with code 1 on server error and code 2 if the
CMDR could not be found on EDSM. CMDR could not be found on EDSM.
findsystem Attempts to find a partially matching system that
should then hopefully be in the vicinity of the given
system
systemlist Pulls all system names starting with the given string systemlist Pulls all system names starting with the given string
from EDSM from EDSM
``` ```
@ -108,6 +111,16 @@ optional arguments:
--url output the commanders profile URL --url output the commanders profile URL
``` ```
```
usage: explorationtools.py findsystem [-h] system
positional arguments:
system the system in question
optional arguments:
-h, --help show this help message and exit
```
``` ```
usage: explorationtools.py systemlist [-h] partialsystem usage: explorationtools.py systemlist [-h] partialsystem

View file

@ -33,14 +33,31 @@ def getCommanderSystem(name, apikey):
return Commander(name, apikey).currentSystem return Commander(name, apikey).currentSystem
def getSystemList(name): def getSystemList(name):
ret = ""
systems = System.getSystems(name) systems = System.getSystems(name)
ret = ""
for system in systems: for system in systems:
ret += "{}\n".format(system.name) ret += "{}\n".format(system.name)
return ret[:-1] return ret[:-1]
def getSystemNear(name):
# Probably want to abort at _some_ point. Im defining two full words left as
# the condition for that now.
if name.count(' ') < 2:
ret = "Aborting search at {}, require more than 2 words to limit the "
ret += "result set."
return ret.format(name)
try:
systems = System.getSystems(name)
except NotFoundError:
return getSystemNear(name[:-1])
else:
ret = ""
for system in systems:
ret += "{} ({}, {}, {})\n".format(system.name,
system.coords['x'], system.coords['y'], system.coords['z'])
return ret[:-1]
# =========================================================================== # ===========================================================================
parser = argparse.ArgumentParser(description="A collection of tools useful for " parser = argparse.ArgumentParser(description="A collection of tools useful for "
@ -61,20 +78,25 @@ parser_distance.add_argument("--roundto", nargs="?", type=int, default=2,
help="the number of digits to round to (default: 2)") help="the number of digits to round to (default: 2)")
parser_distance.add_argument("system", nargs=2, help="the systems to measure") parser_distance.add_argument("system", nargs=2, help="the systems to measure")
parser_find = subparsers.add_parser("findcommander", parser_findCmdr = subparsers.add_parser("findcommander",
help="Attempts to find a CMDRs last known position. Will exit with code 1 " 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.") + "on server error and code 2 if the CMDR could not be found on EDSM.")
group = parser_find.add_mutually_exclusive_group(required=False) group = parser_findCmdr.add_mutually_exclusive_group(required=False)
group.add_argument('--system', action='store_true', group.add_argument('--system', action='store_true',
help='output the commanders last known system (default)') help='output the commanders last known system (default)')
group.add_argument('--coords', action='store_true', group.add_argument('--coords', action='store_true',
help='output the commanders last known position in {x,y,z} coordinates') help='output the commanders last known position in {x,y,z} coordinates')
group.add_argument('--url', action='store_true', group.add_argument('--url', action='store_true',
help='output the commanders profile URL') help='output the commanders profile URL')
parser_find.add_argument("name", help="the commander in question") parser_findCmdr.add_argument("name", help="the commander in question")
parser_find.add_argument("apikey", default="", nargs="?", parser_findCmdr.add_argument("apikey", default="", nargs="?",
help="the commanders EDSM API key. Can be empty for public profiles.") help="the commanders EDSM API key. Can be empty for public profiles.")
parser_findSystem = subparsers.add_parser("findsystem",
help="Attempts to find a partially matching system that should then "
+ "hopefully be in the vicinity of the given system")
parser_findSystem.add_argument("system", help="the system in question")
parser_bodycount = subparsers.add_parser("systemlist", parser_bodycount = subparsers.add_parser("systemlist",
help="Pulls all system names starting with the given string from EDSM") help="Pulls all system names starting with the given string from EDSM")
parser_bodycount.add_argument("partialsystem", nargs=1, parser_bodycount.add_argument("partialsystem", nargs=1,
@ -97,8 +119,13 @@ try:
out = getCommanderProfileUrl(args.name, args.apikey) out = getCommanderProfileUrl(args.name, args.apikey)
else: else:
out = getCommanderSystem(args.name, args.apikey) out = getCommanderSystem(args.name, args.apikey)
elif args.subCommand == "findsystem":
out = getSystemNear(args.system)
elif args.subCommand == "systemlist": elif args.subCommand == "systemlist":
out = getSystemList(args.partialsystem) out = getSystemList(args.partialsystem)
else:
parser.print_usage()
sys.exit(1)
except ServerError as e: except ServerError as e:
print(e) print(e)
sys.exit(1) sys.exit(1)

View file

@ -58,6 +58,12 @@ EOF
cat >> README.md << EOF cat >> README.md << EOF
\`\`\` \`\`\`
\`\`\`
EOF
./explorationtools.py findsystem -h >> README.md
cat >> README.md << EOF
\`\`\`
\`\`\` \`\`\`
EOF EOF
./explorationtools.py systemlist -h >> README.md ./explorationtools.py systemlist -h >> README.md