Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Small async wrapper for "space-track-api" package.

Project description

AsyncSpaceTrackApi async client

Small async wrapper for “space-track-api” package.

Requirements

  • Python >= 3.5.0
  • space-track-api > 1.0.0
  • aiohttp >= 2.0.7

Installing

pip install aio-space-track-api

Getting started

To retrieve something from Space-Track:

# -*- coding: utf-8 -*-

import asyncio
from pprint import pprint

from aio_space_track_api import AsyncSpaceTrackApi


async def main(loop):
    async with AsyncSpaceTrackApi(loop=loop, login='<YOUR_LOGIN>', password='<YOUR_PASSWORD>') as api:
        tle_list = await api.tle(EPOCH='>now-3',
                                 NORAD_CAT_ID=(25544, 25541,),
                                 order_by=('EPOCH desc', 'NORAD_CAT_ID',),
                                 predicate=('EPOCH', 'NORAD_CAT_ID', 'TLE_LINE0', 'TLE_LINE1', 'TLE_LINE2',))
        pprint(tle_list, indent=2)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main(loop))

Create simple proxy Space-Track server:

# -*- coding: utf-8 -*-

from aiohttp import web

from aio_space_track_api import AsyncSpaceTrackApi


async def query(request):
    params = {mvk: request.query.getall(mvk) for mvk in request.query.keys()}

    result = await app['space_track'].query(**params)
    if isinstance(result, (dict, list)):
        return web.json_response(result)
    elif isinstance(result, str):
        return web.Response(text=result)
    return web.Response(body=result)


async def start_space_track(app):
    app['space_track'] = AsyncSpaceTrackApi(loop=app.loop, login='<YOUR_LOGIN>', password='<YOUR_PASSWORD>')
    await app['space_track'].login()


async def cleanup_space_track(app):
    await app['space_track'].logout()
    app['space_track'].session.close()


if __name__ == '__main__':
    app = web.Application()
    app.on_startup.append(start_space_track)
    app.on_cleanup.append(cleanup_space_track)
    app.router.add_get('/', query)
    web.run_app(app, port=8080)

Retrieve with “httpie” <https://github.com/jakubroztocil/httpie> package:

$ http 'http://localhost:8080/?EPOCH=>now-2&NORAD_CAT_ID=25544&order_by=EPOCH%20desc&order_by=NORAD_CAT_ID&predicate=NORAD_CAT_ID&predicate=EPOCH&NORAD_CAT_ID=25541&predicate=TLE_LINE0&predicate=TLE_LINE1&predicate=TLE_LINE2'

HTTP/1.1 200 OK
Content-Length: 787
Content-Type: application/json; charset=utf-8
Date: Fri, 19 May 2017 15:36:30 GMT
Server: Python/3.6 aiohttp/2.0.7

[
    {
        "EPOCH": "2017-05-18 12:54:34",
        "NORAD_CAT_ID": "25544",
        "TLE_LINE0": "0 ISS (ZARYA)",
        "TLE_LINE1": "1 25544U 98067A   17138.53789694 +.00010471 +00000-0 +16649-3 0  9993",
        "TLE_LINE2": "2 25544 051.6431 186.1005 0005417 167.7458 303.2068 15.53904648057142"
    },
    {
        "EPOCH": "2017-05-18 01:38:13",
        "NORAD_CAT_ID": "25541",
        "TLE_LINE0": "0 ARIANE 44LP DEB",
        "TLE_LINE1": "1 25541U 88109H   17138.06821101 +.00000205 +00000-0 +11912-2 0  9995",
        "TLE_LINE2": "2 25541 006.9551 084.3526 7116887 037.1179 355.1935 02.36325430158541"
    },
    {
        "EPOCH": "2017-05-17 18:20:34",
        "NORAD_CAT_ID": "25544",
        "TLE_LINE0": "0 ISS (ZARYA)",
        "TLE_LINE1": "1 25544U 98067A   17137.76428422 +.00000891 +00000-0 +20809-4 0  9995",
        "TLE_LINE2": "2 25544 051.6403 189.9518 0005214 167.7282 292.6823 15.54019900057027"
    }
]

Source code

The latest developer version is available in a github repository: https://github.com/nkoshell/aio-space-track-api

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for aio-space-track-api, version 2.1.1
Filename, size File type Python version Upload date Hashes
Filename, size aio-space-track-api-2.1.1.tar.gz (7.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page