Compare commits

...

8 commits

Author SHA1 Message Date
05bfdcfa92
updated to latest pyEDSM 2022-09-05 21:36:41 +02:00
58f82c29b9
added automated release workflow 2022-09-05 19:02:42 +02:00
6d653c3508
Makefile: changed for running solely on Windows 2022-09-05 18:58:49 +02:00
5718099d5a
spansh.py: added --nofeet option to outdatedstations
… which excludes Odyssey settlements from the outdated stations search.

fixes #10

Also now excluding carriers / settlements _from the search itself_
instead of removing returned results. So now the `--count` will be
properly respected. Will need updating if/when new station types are
introduced.
2022-09-05 16:22:58 +02:00
d2af6b90e4
spansh.py: pretty print raw output 2022-09-05 15:49:01 +02:00
1a76ca59d4
spansh.py: spansh.co.uk → spansh.uk 2022-09-05 15:27:40 +02:00
ceb3e2c660 dependabot 2022-06-01 09:07:24 +02:00
59619ca8bf spansh.py: added raw output option
mostly for debugging
2021-03-14 14:39:57 +01:00
7 changed files with 133 additions and 43 deletions

12
.github/dependabot.yaml vendored Normal file
View file

@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
target-branch: "develop"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "develop"
schedule:
interval: "daily"

35
.github/workflows/create-release.yaml vendored Normal file
View file

@ -0,0 +1,35 @@
name: Create release on tag push
on:
push:
tags:
- 'release/*'
jobs:
build:
name: Pre-compile for Windows
runs-on: windows-latest
permissions:
contents: write
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Make exe
run: make exe
- name: Create .zip archive
run: make release
- name: Draft release
uses: ncipollo/release-action@v1
with:
artifacts: "elite-scripts.zip"
bodyFile: "CHANGELOG.md"
draft: true

View file

@ -1,15 +1,29 @@
# devel
## Added
* `spansh.py`: `--raw` option. Prints the raw JSON returned from a query.
* `spansh.py`: `--nofeet` option for `outdatedstations`. Excludes Odyssey
settlements from the result set.
## Changed
* `spansh.py`: Now uses <https://spansh.uk> instead of <https://spansh.co.uk>.
-----
# 0.7 (2021-01-28)
## Changed
* spansh.py: Fleet carriers are now explicitly excluded from the outdated
* `spansh.py`: Fleet carriers are now explicitly excluded from the outdated
stations list.
## Fixed
* explorationtools.py: Searching for a CMDR with public profile, but hidden
* `explorationtools.py`: Searching for a CMDR with public profile, but hidden
activity will no longer error out.
* explorationtools.py: Searching for a CMDR with public profile, but hidden
* `explorationtools.py`: Searching for a CMDR with public profile, but hidden
flight log will no longer error out.
-----

View file

@ -12,12 +12,12 @@ docs:
exe:
pip install --user --upgrade -r requirements.txt
pip install --user --upgrade -r pyEDSM\requirements.txt
python -OO -m PyInstaller --clean -yF edsm-getnearest.py
python -OO -m PyInstaller --clean -yF edts.py
python -OO -m PyInstaller --clean -yF explorationtools.py
python -OO -m PyInstaller --clean -yF spansh.py
pip install --user --upgrade pywin32-ctypes cffi
pip install --user --upgrade pyinstaller
python -m PyInstaller --clean -yF edsm-getnearest.py
python -m PyInstaller --clean -yF edts.py
python -m PyInstaller --clean -yF explorationtools.py
python -m PyInstaller --clean -yF spansh.py
# probably wont work unless youre me :)
release: clean
rsync -avz gezocks:/mnt/d/git/elite-scripts/dist/ build/
cd build && zip -r ../$(zipfile) *
pwsh -Command "Compress-Archive -Path .\dist\*.exe elite-scripts.zip"

View file

@ -36,7 +36,7 @@ positional arguments:
CMDR a list of CMDR names (must have their location public on
EDSM!)
optional arguments:
options:
-h, --help show this help message and exit
--system SYSTEM the target system (must be in EDDN!)
--short short output (only makes sense with `--text`)
@ -51,7 +51,7 @@ usage: edts.py [-h] {coords} ...
Script for interfacing with Alots hosted EDTS API.
optional arguments:
options:
-h, --help show this help message and exit
subcommands:
@ -66,7 +66,7 @@ usage: edts.py coords [-h] [--maxuncertainty [MAXUNCERTAINTY]] system
positional arguments:
system the system name to get coordinates for
optional arguments:
options:
-h, --help show this help message and exit
--maxuncertainty [MAXUNCERTAINTY]
maximum accepted uncertainty, if any
@ -81,7 +81,7 @@ usage: explorationtools.py [-h]
A collection of tools useful for exploration.
optional arguments:
options:
-h, --help show this help message and exit
subcommands:
@ -111,7 +111,7 @@ usage: explorationtools.py bodycount [-h] system
positional arguments:
system system to query
optional arguments:
options:
-h, --help show this help message and exit
```
@ -122,7 +122,7 @@ usage: explorationtools.py distancebetween [-h] [--roundto [ROUNDTO]]
positional arguments:
system the systems to measure
optional arguments:
options:
-h, --help show this help message and exit
--roundto [ROUNDTO] the number of digits to round to (default: 2)
```
@ -135,7 +135,7 @@ positional arguments:
name the commander in question
apikey the commanders EDSM API key. Can be empty for public profiles.
optional arguments:
options:
-h, --help show this help message and exit
--system output the commanders last known system (default)
--coords output the commanders last known position in {x,y,z}
@ -149,7 +149,7 @@ usage: explorationtools.py findsystem [-h] system
positional arguments:
system the system in question
optional arguments:
options:
-h, --help show this help message and exit
```
@ -159,19 +159,20 @@ usage: explorationtools.py systemlist [-h] partialsystem
positional arguments:
partialsystem the partial system name to query against
optional arguments:
options:
-h, --help show this help message and exit
```
### spansh.py ###
```
usage: spansh.py [-h] {nearestsystem,oldstations,systemexists} ...
usage: spansh.py [-h] [--raw] {nearestsystem,oldstations,systemexists} ...
Script for interfacing with Spanshs API.
optional arguments:
options:
-h, --help show this help message and exit
--raw output raw json (mostly for debugging)
subcommands:
{nearestsystem,oldstations,systemexists}
@ -191,7 +192,7 @@ usage: spansh.py nearestsystem [-h] [--short | --parsable]
positional arguments:
coordinate the coordinates to search for (order: x, y, z)
optional arguments:
options:
-h, --help show this help message and exit
--short short output format (system name only)
--parsable parsable output format (<name>|<x>,<y>,<z>|<distance>)
@ -199,9 +200,9 @@ optional arguments:
```
usage: spansh.py oldstations [-h] [--system [SYSTEM]] [--count [COUNT]]
[--minage [MINAGE]] [--short]
[--minage [MINAGE]] [--short] [--nofeet]
optional arguments:
options:
-h, --help show this help message and exit
--system [SYSTEM] a single system to query. If not present, get the oldest
stations overall.
@ -209,6 +210,7 @@ optional arguments:
--minage [MINAGE] minimum age of data (in days) to be considered
“outdated”. Defaults to 365 (= 1year).
--short short output format (system/station names only)
--nofeet omit Odyssey settlements
```
```
@ -217,7 +219,7 @@ usage: spansh.py systemexists [-h] system
positional arguments:
system the system to search for
optional arguments:
options:
-h, --help show this help message and exit
```

2
pyEDSM

@ -1 +1 @@
Subproject commit da044e918fe17cf18d2b2e18d60ce16a168ea70b
Subproject commit 240ada35f78bec7490f6333a227fd8ae80a5c437

View file

@ -23,7 +23,7 @@ def querystations(url, params):
# ===========================================================================
def getNearestSystem(coords):
def getNearestSystem(coords, raw=False):
params = {
"x": coords[0],
"y": coords[1],
@ -35,6 +35,8 @@ def getNearestSystem(coords):
json = response.json()
if raw: return json
ret = None
system = json["system"]
if args.short:
@ -49,7 +51,7 @@ def getNearestSystem(coords):
return ret
def getOldStations():
def getOldStations(raw=False):
params = {
"json": JSON.dumps({
"filters": FILTERS,
@ -59,6 +61,8 @@ def getOldStations():
}
json = querystations(APIURLS["stations"], params)
if raw: return json
ret = ""
for station in json["results"]:
if args.short:
@ -69,7 +73,7 @@ def getOldStations():
return ret[:-1]
def getOldStationsInSystem(system):
def getOldStationsInSystem(system, raw=False):
FILTERS.update(system_name={"value": system})
params = {
"json": JSON.dumps({
@ -79,12 +83,12 @@ def getOldStationsInSystem(system):
}
json = querystations(APIURLS["stations"], params)
if raw: return json
ret = ""
# exclude carriers
stations = list(filter(lambda station: not station["type"] == "Drake-Class Carrier", json["results"]))
if len(stations) == 0:
if len(json["results"]) == 0:
raise NotFoundError()
for station in stations:
for station in json["results"]:
# systems including the given name as a word will also trigger;
# looking for e.g. “Mari” will also give you stuff in “Mac Mari”!
if station["system_name"] == system:
@ -96,7 +100,7 @@ def getOldStationsInSystem(system):
return ret[:-1]
def systemExists(system):
def systemExists(system, raw=False):
params = {
"json": JSON.dumps({
"filters": {
@ -111,6 +115,9 @@ def systemExists(system):
raise ServerError(url, params)
json = response.json()
if raw: return json
if json["count"] == 0:
raise NotFoundError()
@ -125,6 +132,8 @@ def systemExists(system):
parser = argparse.ArgumentParser(description="Script for interfacing with "
+ "Spanshs API.")
parser.add_argument("--raw", action='store_true',
help="output raw json (mostly for debugging)")
subparsers = parser.add_subparsers(title="subcommands", help="sub-command help",
dest="subcommand", required=True)
@ -150,6 +159,8 @@ parser_oldstations.add_argument("--minage", nargs="?", type=int, default=365,
+ "365 (= 1year).")
parser_oldstations.add_argument("--short", action='store_true',
help="short output format (system/station names only)")
parser_oldstations.add_argument("--nofeet", action='store_true',
help="omit Odyssey settlements")
parser_systemexists = subparsers.add_parser("systemexists",
help="Checks if a given system exists in the search database.")
@ -162,9 +173,9 @@ args = parser.parse_args()
# ===========================================================================
APIURLS = {
"nearest": "https://spansh.co.uk/api/nearest",
"stations": "https://spansh.co.uk/api/stations/search",
"systems": "https://spansh.co.uk/api/systems/search",
"nearest": "https://spansh.uk/api/nearest",
"stations": "https://spansh.uk/api/stations/search",
"systems": "https://spansh.uk/api/systems/search",
}
try:
@ -177,21 +188,37 @@ try:
"value": [
"2017-11-06",
(datetime.now() - timedelta(days=args.minage)).strftime("%Y-%m-%d")
],
],
"comparison": "<=>"
}
},
"type":
{
"value": [
"Asteroid base",
"Coriolis Starport",
"Mega ship",
"Ocellus Starport",
"Orbis Starport",
"Outpost",
"Planetary Outpost",
"Planetary Port",
"Settlement" if not args.nofeet else ""
]
}
}
SORT = {
"updated_at": {
"direction": "asc"
}
}
}
if args.system:
out = getOldStationsInSystem(args.system)
out = getOldStationsInSystem(args.system, args.raw)
else:
out = getOldStations()
out = getOldStations(args.raw)
if args.raw:
out = JSON.dumps(out, indent=2)
elif args.subcommand == "systemexists":
out = systemExists(args.system)
out = systemExists(args.system, args.raw)
except ServerError as e:
print(e)
sys.exit(1)