Inspiration

"Every civilization either becomes space fairing or extinct" - Carl Sagan. Over ages humans have been fascinated by the idea of interplanetary travel and we also visited our moon during the Apollo Missions. MARS being our next destination, we want to know as much as possible about the harsh conditions on the red planet and data is important in this case.

Where man can't go, machines can, this is very well proven by the interplanetary exploratory missions that our space organizations plan. NASA's Curiosity/MSL and Perseverance/M2020 missions are two car size rovers that are out there doing the exploration for us. Everything they do, they record data of several kinds, the most important thing being images. As of now, downloading images and their metadata is a painful process from the official NASA website as in, there's no way for us enthusiasts to batch download.

This is where rover comes in.

What it does

rover is a command line interface application that abstracts and makes the process of obtaining information available on the mars.nasa.gov website easy through providing meaningful and easy to use commands so that the savvy data enthusiast in us doesn't have to keep switching between their programming environment and the web-browser. i.e., this is for the power user is us.

Challenges & How rover was built

As mentioned earlier there's no way to batch download images nor is there a way to download the metadata on the website. To get around these challenges, rover mimics a browser request using the python requests library, applies some magic and presents data to the user.

Accomplishments so far..

rover has 5 functional commands that are operable on both MSL and MARS2020 missions and allows to download

Usage: rover [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  camera    Show camera info
  download  Download mission raw images/metadata
  missions  Show list of active missions
  stats     Show mission statistics
  status    Show mission status

What we learned

  • Building CLIS in python
  • interacting with APIs

What's next for rover

  • adding more commands
  • add filters to download options
Share this project:

Updates