A simple python wrapper for the Launch Library web API. Can also be used asynchronously too.
Important: New projects should NOT use this library. Instead, generate client stubs from the OpenAPI definitions using openapi-generator.
Available models: Agency, Launch, Pad, Location, Rocket
The usage of the API is simple.
Proper documentation is available in Read The Docs.
To install, simply use pip: pip install python-launch-library
# First, import the library
import launchlibrary as ll
# Then, initialize an API object
api = ll.Api()
# And fetch whichever models you'd like.
# Either by an explicit API call
next_5_go_launches = api.fetch_launch(next=5, status=1)
# Or by one of the simpler methods available for some models.
next_5_go_launches = api.next_launches(5)
# Now, you can utilize whatever data you'd like. Data from the API is processed recursively, so if a Launch object
# contains a Location object, you'll have models for both.
launch_loc = next_5_go_launches[0].location
# Some properties, like status, are only represented by ID. You can call the appropriate methods to get a proper object from that ID
launch_status = next_5_go_launches[0].get_status()
# It's now possible to also use the regular API names as well as pythonic names.
vid_urls = next_5_go_launches[0].vid_urls
vid_urls_2 = next_5_go_launches[0].vidURLs
Since version 1.0.1
, the library is versioned according to semantic versioning rules.
Important: New projects should NOT use this library. Instead, use the OpenAPI definitions provided in https://ll.thespacedevs.com/2.0.0/swagger
-
2.0.0 - Update to LL2, aka
https://thespacedevs.com/llapi
. There are some data changes, so this is a breaking change.This is a quickly hacked together attempt to add some compatibility to LL2 for current users, as there's no point in spending time creating a wrapper when OpenAPI definitions exist.
Breaking Changes:
- The AgencyType, LaunchStatus, and RocketFamily models have been eliminated.
- All instances, except in
Launch
ofinfo_urls
have been changed toinfo_url
(this is compliant with the new API). - Many parameters might be unavailable as many names were changed.
- Modelizations might not work as well as many names were changed.
-
1.0.3, 1.0.4, 1.0.5, 1.0.6 - Fixed some bugs in the async variant
-
1.0.2 - Added an exception hierarchy. All exceptions now inherit from LlException
-
1.0.1 - Improved caching.
-
1.0 - Changed all fetch calls to be through the Api object. This is a breaking change.
# Porting guide import launchlibrary as ll api = ll.Api() # Before next_launch = ll.Launch.next(api, 1) # After next_launch = api.next_launches(1)
- Tidy up the repository
- Add exceptions to handle server timeout
- Handle nested models (i.e. a Pad model inside a Location model inside a Launch model)
- Handle times with the datetime class
- Package properly and upload to PyPI
- Add more abstraction methods for the api calls (open to suggestions)
- Add magic method comparisons (open to suggestions)
- Asynchronous operation
- Add aliases for actual API names with getattr
- Add tests
- Your suggestion here
Feel free to open issues and pull requests! I usually check Github daily.