From b64fd56776f03342559034df27948269d49c3375 Mon Sep 17 00:00:00 2001 From: Jaydeep Das Date: Sat, 23 Oct 2021 18:08:25 +0530 Subject: [PATCH] Added feature to `web_programming/nasa_data.py` : Can download the APOD image to a specified location on disk. (#5551) * Added a feature to download images. * Minor changes * Update nasa_data.py * : Co-authored-by: Christian Clauss --- web_programming/nasa_data.py | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/web_programming/nasa_data.py b/web_programming/nasa_data.py index 9b15c38..c0a2c4f 100644 --- a/web_programming/nasa_data.py +++ b/web_programming/nasa_data.py @@ -1,27 +1,38 @@ +import shutil + import requests -def get_apod_data(api_key: str) -> dict: +def get_apod_data(api_key: str, download: bool = False, path: str = ".") -> dict: """ Get the APOD(Astronomical Picture of the day) data - Get the API Key from : https://api.nasa.gov/ + Get your API Key from: https://api.nasa.gov/ """ - url = "https://api.nasa.gov/planetary/apod/" + url = "https://api.nasa.gov/planetary/apod" return requests.get(url, params={"api_key": api_key}).json() +def save_apod(api_key: str, path: str = ".") -> dict: + apod_data = get_apod_data(api_key) + img_url = apod_data["url"] + img_name = img_url.split("/")[-1] + response = requests.get(img_url, stream=True) + + with open(f"{path}/{img_name}", "wb+") as img_file: + shutil.copyfileobj(response.raw, img_file) + del response + return apod_data + + def get_archive_data(query: str) -> dict: """ Get the data of a particular query from NASA archives """ - endpoint = "https://images-api.nasa.gov/search" - return requests.get(endpoint, params={"q": query}).json() + url = "https://images-api.nasa.gov/search" + return requests.get(url, params={"q": query}).json() if __name__ == "__main__": - print(get_apod_data("YOUR API KEY")) - print( - get_archive_data("apollo 2011")["collection"]["items"][0]["data"][0][ - "description" - ] - ) + print(save_apod("YOUR API KEY")) + apollo_2011_items = get_archive_data("apollo 2011")["collection"]["items"] + print(apollo_2011_items[0]["data"][0]["description"]) -- GitLab